<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>171688</bug_id>
          
          <creation_ts>2017-05-04 13:49:13 -0700</creation_ts>
          <short_desc>Attr Nodes should not have children</short_desc>
          <delta_ts>2017-05-09 20:21:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://dom.spec.whatwg.org/#attr</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>171813</blocked>
    
    <blocked>171909</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1304814</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-04 13:49:13 -0700</bug_when>
    <thetext>Attr Nodes should not have children as per the latest DOM specification:
- https://dom.spec.whatwg.org/#attr

In WebKit, we still maintain a text child to indicate the Attr node&apos;s value. Firefox and Chrome has followed the latest specification (e.g. trying to append a child to an Attribute node throws a HierarchyErr).

Test case:
http://jsbin.com/cujuwoxexi/1/edit?html,css,output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304824</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-04 14:08:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/31998412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304963</commentid>
    <comment_count>2</comment_count>
      <attachid>309129</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-04 19:41:15 -0700</bug_when>
    <thetext>Created attachment 309129
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304981</commentid>
    <comment_count>3</comment_count>
      <attachid>309136</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-04 20:36:40 -0700</bug_when>
    <thetext>Created attachment 309136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304983</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-04 20:41:00 -0700</bug_when>
    <thetext>Attachment 309136 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:16:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: security bug  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305001</commentid>
    <comment_count>5</comment_count>
      <attachid>309136</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-04 21:47:13 -0700</bug_when>
    <thetext>Comment on attachment 309136
Patch

Patch looks big but this is mostly due to removing legacy / outdated DOM tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305237</commentid>
    <comment_count>6</comment_count>
      <attachid>309136</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-05-05 11:54:04 -0700</bug_when>
    <thetext>Comment on attachment 309136
Patch

r=me
Attr is the worst. This is such a nice patch, I am having feelings right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305256</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-05 12:26:43 -0700</bug_when>
    <thetext>https://trac.webkit.org/r216259</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309129</attachid>
            <date>2017-05-04 19:41:15 -0700</date>
            <delta_ts>2017-05-04 20:36:37 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>171688_Attr_NoChildren_wip.patch</filename>
            <type>text/plain</type>
            <size>431514</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBl
bmRjaGlsZDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmFwcGVuZGNoaWxkMS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGRmZDA5ODAzNTdkLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQxLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVz
dC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQxCi1TdGF0dXM6CVN1Y2Nlc3MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBl
bmRjaGlsZDEuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJh
cHBlbmRjaGlsZDEuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMyMjFhYzUz
MzkuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJhcHBlbmRjaGlsZDEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0
dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21t
ZW50IG51bWJlciAxLi0tPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwv
dGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwv
c2NyaXB0PjxzY3JpcHQgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJoY19hdHRyYXBwZW5kY2hpbGQxLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2
YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0
PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAw
MDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2Nv
dW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVt
YWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMs
IFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgot
ICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRp
dHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFU
QVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAg
PGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFz
LCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwv
ZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50
IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zh
cj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0
ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAg
PHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9y
PC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNy
b255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywg
VGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0g
IDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxp
c3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNy
b255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9h
Y3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9k
b20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQxLmpzIGIvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMS5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGJiMGFkOTM3MzcuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDEuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxMzIgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdv
cmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRl
Y2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3Mg
YW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQu
IFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNl
bnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFd
IGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdh
cmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50
aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0g
ICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3
dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hp
bGQxIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0g
bnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3Rpbmcg
ZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8v
ICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3Vz
Ci0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUg
c3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlz
IGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2Yg
dGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVz
ID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3Qg
ZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWls
ZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7
Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlz
LmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAg
ICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZm
Iik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBz
ZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7
Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNl
dFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhp
cyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFz
eWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVy
eSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhl
IHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9m
IHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAg
IGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29t
cGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BcHBlbmRzIGEgdGV4dCBub2RlIHRvIGFu
IGF0dHJpYnV0ZSBhbmQgY2hlY2tzIGlmIHRoZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0ZSBpcyBj
aGFuZ2VkLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2
NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0x
OTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0xODRFNzEwNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJh
cHBlbmRjaGlsZDEoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0
aW9uKGJ1aWxkZXIsICJoY19hdHRyYXBwZW5kY2hpbGQxIikgIT0gbnVsbCkgcmV0dXJuOwotICAg
IHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0g
ICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFs
dWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGxh
c3RDaGlsZDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlw
ZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRv
YzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7
Ci0gICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIp
OwotICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRl
cyA9IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMu
Z2V0TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4dE5v
ZGUoInRlcmRheSIpOwotICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmFwcGVuZENoaWxkKHRleHRO
b2RlKTsKLSAgICAgIHZhbHVlID0gdGl0bGVBdHRyLnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVh
bHMoImF0dHJWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gdGl0bGVB
dHRyLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwiWWVz
dGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSByZXR2YWwubm9kZVZhbHVlOwotCi0gICAg
ICBhc3NlcnRFcXVhbHMoInJldHZhbFZhbHVlIiwidGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgbGFz
dENoaWxkID0gdGl0bGVBdHRyLmxhc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBsYXN0Q2hpbGQu
bm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImxhc3RDaGlsZFZhbHVlIiwidGVyZGF5
Iix2YWx1ZSk7Ci0gICAgICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBo
Y19hdHRyYXBwZW5kY2hpbGQxKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDItZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzM1ZmEwNjFiZS4uMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxk
Mi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3Q6CWh0dHA6
Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVu
ZGNoaWxkMgotU3RhdHVzOglTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQyLmh0bWwgYi9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQyLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGQwNzQxODNmNTI4Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQyLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFRE
IEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3Qu
ZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmFwcGVuZGNoaWxkMi5qcyI+PC9zY3Jp
cHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgp
IHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxl
dGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0
aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3Vw
PjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
Ij4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0g
PHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlz
IGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsK
LVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0
YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4z
NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIg
Y2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwv
cD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0
cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8
L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNz
PSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxw
PgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0g
IDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAg
PHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7
Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8
cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgot
ICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgot
ICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJv
YWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVu
ZGNoaWxkMi5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBl
bmRjaGlsZDIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjNTM4OTZkMGE3Li4w
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
YXBwZW5kY2hpbGQyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLQotLyoKLUNv
cHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNz
YWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25z
b3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5
KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xl
Z2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0g
ICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4g
dXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7
Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2
ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMiI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0g
LTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24g
aXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmlu
ZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9u
IGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMg
c3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21w
bGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3
aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFn
ZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8v
Ci0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNl
cHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7
Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVs
bDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAg
IGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2Fk
KGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xv
YWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAg
ICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3Io
YnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAg
IH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxl
dGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBU
ZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhh
cyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFs
bG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0
aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAg
ICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAot
QXR0ZW1wdHMgdG8gYXBwZW5kIGFuIGVsZW1lbnQgdG8gdGhlIGNoaWxkIG5vZGVzIG9mIGFuIGF0
dHJpYnV0ZS4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3
NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEt
MTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTg0RTcxMDcKLSovCi1mdW5jdGlvbiBoY19hdHRy
YXBwZW5kY2hpbGQyKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXph
dGlvbihidWlsZGVyLCAiaGNfYXR0cmFwcGVuZGNoaWxkMiIpICE9IG51bGwpIHJldHVybjsKLSAg
ICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwot
ICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZh
bHVlOwotICAgICAgdmFyIG5ld0NoaWxkOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBs
YXN0Q2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5
cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5k
b2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIp
OwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0i
KTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0
ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVz
LmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIG5ld0NoaWxkID0gZG9jLmNyZWF0ZUVsZW1l
bnQoInRlcmRheSIpOwotICAgICAgCi0JewotCQlzdWNjZXNzID0gZmFsc2U7Ci0JCXRyeSB7Ci0g
ICAgICAgICAgICByZXR2YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hpbGQobmV3Q2hpbGQpOwotICAg
ICAgICB9Ci0JCWNhdGNoKGV4KSB7Ci0gICAgICBzdWNjZXNzID0gKHR5cGVvZihleC5jb2RlKSAh
PSAndW5kZWZpbmVkJyAmJiBleC5jb2RlID09IDMpOwotCQl9Ci0JCWFzc2VydFRydWUoInRocm93
X0hJRVJBUkNIWV9SRVFVRVNUX0VSUiIsc3VjY2Vzcyk7Ci0JfQotCi19Ci0KLQotCi0KLWZ1bmN0
aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyYXBwZW5kY2hpbGQyKCk7Ci19CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBl
bmRjaGlsZDMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTRj
NzVjMDFmYy4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmFwcGVuZGNoaWxkMy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwy
ICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2
ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMwotU3RhdHVzOglTdWNjZXNzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQzLmh0
bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYjAyMzZmMjU0Li4wMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5k
Y2hpbGQzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIg
MS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2Ny
aXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmFw
cGVuZGNoaWxkMy5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1
bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJv
ZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAg
PHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29k
ZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgot
ICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1
MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5N
YXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNl
IG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdp
dGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3Jl
dGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAg
PGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwot
IDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ry
b25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9j
b2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3Jv
bnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8
L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVu
eSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAg
PHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9
IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2
PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJv
YmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgot
ICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9
IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8
L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMy5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY2YWRjM2RiNWMzLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQzLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MTM4ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdl
YiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBF
dXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1h
dGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsg
aXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4g
dGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3
LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMx
Ci0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0
ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5j
dGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIw
MDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMyI7Ci0gICB9
Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8v
Ci0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBi
ZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJl
IGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAg
IGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8g
ICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVs
eQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0Lgot
Ly8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5n
JzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1
aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0
ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0g
ICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1
bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAg
ZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAg
ICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRj
aEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0
dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlz
IGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBs
b2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25v
dXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1
cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0
byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2Nz
TG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAg
ICB9Ci19Ci0KLQotLyoqCi0qIAotQXBwZW5kcyBhIGRvY3VtZW50IGZyYWdtZW50IHRvIGFuIGF0
dHJpYnV0ZSBhbmQgY2hlY2tzIGlmIHRoZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0ZSBpcyBjaGFu
Z2VkLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9U
Ui8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYw
MjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4
MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0xODRFNzEwNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJhcHBl
bmRjaGlsZDMoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9u
KGJ1aWxkZXIsICJoY19hdHRyYXBwZW5kY2hpbGQzIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZh
ciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAg
ICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7
Ci0gICAgICB2YXIgdGVyTm9kZTsKLSAgICAgIHZhciBkYXlOb2RlOwotICAgICAgdmFyIHJldHZh
bDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICB2YXIgZG9jRnJhZzsKLSAgICAgIAotICAg
ICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5k
ZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRv
YyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlzdCA9
IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUgPSBh
Y3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0
ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIp
OwotICAgICAgdGVyTm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgidGVyIik7Ci0gICAgICBkYXlO
b2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJkYXkiKTsKLSAgICAgIGRvY0ZyYWcgPSBkb2MuY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGls
ZCh0ZXJOb2RlKTsKLSAgICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5kQ2hpbGQoZGF5Tm9kZSk7
Ci0gICAgICByZXR2YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hpbGQoZG9jRnJhZyk7Ci0gICAgICB2
YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUi
LCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7
Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUp
OwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0TnVsbCgi
cmV0dmFsVmFsdWUiLHZhbHVlKTsKLSAgICBsYXN0Q2hpbGQgPSB0aXRsZUF0dHIubGFzdENoaWxk
OwotCi0gICAgICB2YWx1ZSA9IGxhc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVx
dWFscygibGFzdENoaWxkVmFsdWUiLCJkYXkiLHZhbHVlKTsKLSAgICAgICAKLX0KLQotCi0KLQot
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJhcHBlbmRjaGlsZDMoKTsKLX0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGls
ZDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmFwcGVuZGNoaWxkNC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYyOWMwNTI0MjZjLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0
ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ0Ci1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGls
ZDQuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRj
aGlsZDQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZjNDM3Yjc3NDEuLjAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJh
cHBlbmRjaGlsZDQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93
d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51
bWJlciAxLi0tPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0
PjxzY3JpcHQgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19h
dHRyYXBwZW5kY2hpbGQ0LmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlw
dCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVh
ZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2Vt
PgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50
PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92
YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFz
IDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ry
b25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZl
cmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rp
b24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+
U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2Ft
bWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0g
IDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFn
ZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAg
PGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5
ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9u
Zz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2Rl
PgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMg
OTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJv
bmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2Nv
ZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3Jvbnlt
PgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ0LmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZGM3MDEwMmU0N2YuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Rv
bS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDQuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwxNTIgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdp
ZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xv
Z3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1h
dGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMg
d29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsx
XSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6
Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAw
MjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMg
dGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8K
LWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5v
cmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ0IjsK
LSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsK
LQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3
b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYg
dGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAg
ICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVz
Ci0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVk
aWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRl
c3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1
bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1l
bnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0g
Y3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLSAgICAgICBjaGVja0ZlYXR1cmUoIlhNTCIsIG51
bGwpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9
IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAg
ICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJl
bG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRv
Y3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7
Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVy
cm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsK
LSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNv
bXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNl
dFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVu
dCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGlj
aCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1m
dW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0g
ICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgot
KiAKLUF0dGVtcHQgdG8gYXBwZW5kIGEgQ0RBVEFTZWN0aW9uIHRvIGFuIGF0dHJpYnV0ZSB3aGlj
aCBzaG91bGQgcmVzdWx0Ci1pbiBhIEhJRVJBUkNIWV9SRVFVRVNUX0VSUi4KLQotKiBAYXV0aG9y
IEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxl
dmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDov
L3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNv
cmUjSUQtMTg0RTcxMDcKLSovCi1mdW5jdGlvbiBoY19hdHRyYXBwZW5kY2hpbGQ0KCkgewotICAg
dmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0
cmFwcGVuZGNoaWxkNCIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFy
IGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7
Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHRO
b2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICAKLSAg
ICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3Vu
ZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBk
b2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3Qg
PSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0g
YWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1
dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUi
KTsKLSAgICAgIAotCWlmKAotCQotCShidWlsZGVyLmNvbnRlbnRUeXBlID09ICJ0ZXh0L2h0bWwi
KQotCi0JKSB7Ci0JCi0JewotCQlzdWNjZXNzID0gZmFsc2U7Ci0JCXRyeSB7Ci0gICAgICAgICAg
ICB0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVDREFUQVNlY3Rpb24oInRlcmRheSIpOwotICAgICAgICB9
Ci0JCWNhdGNoKGV4KSB7Ci0gICAgICBzdWNjZXNzID0gKHR5cGVvZihleC5jb2RlKSAhPSAndW5k
ZWZpbmVkJyAmJiBleC5jb2RlID09IDkpOwotCQl9Ci0JCWFzc2VydFRydWUoInRocm93X05PVF9T
VVBQT1JURURfRVJSIixzdWNjZXNzKTsKLQl9Ci0KLQl9Ci0JCi0JCWVsc2UgewotCQkJdGV4dE5v
ZGUgPSBkb2MuY3JlYXRlQ0RBVEFTZWN0aW9uKCJ0ZXJkYXkiKTsKLSAgICAgIAotCXsKLQkJc3Vj
Y2VzcyA9IGZhbHNlOwotCQl0cnkgewotICAgICAgICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmFw
cGVuZENoaWxkKHRleHROb2RlKTsKLSAgICAgICAgfQotCQljYXRjaChleCkgewotICAgICAgc3Vj
Y2VzcyA9ICh0eXBlb2YoZXguY29kZSkgIT0gJ3VuZGVmaW5lZCcgJiYgZXguY29kZSA9PSAzKTsK
LQkJfQotCQlhc3NlcnRUcnVlKCJ0aHJvd19ISUVSQVJDSFlfUkVRVUVTVF9FUlIiLHN1Y2Nlc3Mp
OwotCX0KLQotCQl9Ci0JCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19h
dHRyYXBwZW5kY2hpbGQ0KCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTRhNzVjZmMwOS4uMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNS1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93
d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNo
aWxkNQkKLVN0YXR1czoJZmFpbHVyZQotRGV0YWlsOgl0aHJvd19XUk9OR19ET0NVTUVOVF9FUlI6
IGFzc2VydFRydWUgZmFpbGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1Lmh0bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDIzNzM0MmZkYTNhLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1Lmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwg
NC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+
Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04
Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmFwcGVuZGNoaWxkNS5qcyI+PC9zY3JpcHQ+PHNj
cmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3Rh
cnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+
Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0
cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAw
MDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMw
IE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RB
VEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMg
aXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFt
cDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8
L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8
cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4K
LSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4K
LSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+
UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8
ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2Rl
PlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5G
ZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBT
b3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAg
PGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29k
ZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFy
Pm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIEly
dmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxk
NS5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGls
ZDUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ZTg4NTU0YzUwLi4wMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5k
Y2hpbGQ1LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLyoKLUNvcHlyaWdo
dCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNl
dHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVt
IAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxs
IAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFcz
Q8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIw
MDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAg
R2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlk
ZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAg
ICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmFwcGVuZGNoaWxkNSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAw
MDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2Fs
bGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUg
dGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2Vw
dGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRl
ZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBh
bmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVu
dGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsK
LSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAg
IC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24K
LSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAg
ICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAg
ICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1Jl
ZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1Jl
ZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgIHZhciBvdGhlckRvY1JlZiA9
IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMub3RoZXJEb2MpICE9ICd1bmRlZmluZWQnKSB7
Ci0gICAgICAgIG90aGVyRG9jUmVmID0gdGhpcy5vdGhlckRvYzsKLSAgICAgIH0KLSAgICAgIGRv
Y3NMb2FkZWQgKz0gcHJlbG9hZChvdGhlckRvY1JlZiwgIm90aGVyRG9jIiwgImhjX3N0YWZmIik7
Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDIpIHsKLSAgICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0g
ICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVw
UGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBt
ZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNo
cm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBz
eW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBh
Z2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRo
ZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlm
ICgrK2RvY3NMb2FkZWQgPT0gMikgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxl
dGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BdHRlbXB0IHRvIGFwcGVuZCBhIG5vZGUgZnJv
bSBhbm90aGVyIGRvY3VtZW50IHRvIGFuIGF0dHJpYnV0ZSB3aGljaCBzaG91bGQgcmVzdWx0Ci1p
biBhIFdST05HX0RPQ1VNRU5UX0VSUi4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwt
b25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9S
RUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTg0RTcxMDcKLSovCi1m
dW5jdGlvbiBoY19hdHRyYXBwZW5kY2hpbGQ1KCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYo
Y2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cmFwcGVuZGNoaWxkNSIpICE9IG51
bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAg
dmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRy
OwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIHJldHZh
bDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICB2YXIgb3RoZXJEb2M7Ci0gICAgICAKLSAg
ICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3Vu
ZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBk
b2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgCi0gICAgICB2YXIg
b3RoZXJEb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLm90aGVyRG9jKSAhPSAn
dW5kZWZpbmVkJykgewotICAgICAgICBvdGhlckRvY1JlZiA9IHRoaXMub3RoZXJEb2M7Ci0gICAg
ICB9Ci0gICAgICBvdGhlckRvYyA9IGxvYWQob3RoZXJEb2NSZWYsICJvdGhlckRvYyIsICJoY19z
dGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFj
cm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0
dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRy
aWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gb3RoZXJEb2Mu
Y3JlYXRlVGV4dE5vZGUoInRlcmRheSIpOwotICAgICAgCi0JewotCQlzdWNjZXNzID0gZmFsc2U7
Ci0JCXRyeSB7Ci0gICAgICAgICAgICByZXR2YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hpbGQodGV4
dE5vZGUpOwotICAgICAgICB9Ci0JCWNhdGNoKGV4KSB7Ci0gICAgICBzdWNjZXNzID0gKHR5cGVv
ZihleC5jb2RlKSAhPSAndW5kZWZpbmVkJyAmJiBleC5jb2RlID09IDQpOwotCQl9Ci0JCWFzc2Vy
dFRydWUoInRocm93X1dST05HX0RPQ1VNRU5UX0VSUiIsc3VjY2Vzcyk7Ci0JfQotCi19Ci0KLQot
Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyYXBwZW5kY2hpbGQ1KCk7Ci19CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5k
Y2hpbGQ2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJhcHBlbmRjaGlsZDYtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4M2UxMDVjOWY0MS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwyICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3Qt
U3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNgotU3RhdHVzOglTdWNjZXNzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5k
Y2hpbGQ2Lmh0bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBw
ZW5kY2hpbGQ2Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1MGE0NWFiZDU1
Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyYXBwZW5kY2hpbGQ2Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRw
Oi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVu
dCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3Rp
dGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3Nj
cmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
aGNfYXR0cmFwcGVuZGNoaWxkNi5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFz
Y3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48
L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAx
PC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3Vu
dGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBU
ZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAg
PHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5
UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFT
ZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxj
b2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8
L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywg
JmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2Vt
PgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBN
YW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+
Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4
YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxz
dHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3Rvcjwv
Y29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9u
eW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRl
eGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8
c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0
PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9u
eW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNy
b255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNi5qcyBiL0xheW91dFRlc3RzL2Rv
bS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDYuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAxYjNkODA1ODY3Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ2LmpzCisrKyAvZGV2L251
bGwKQEAgLTEsMTI3ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3Js
ZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNo
bm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFu
ZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBU
aGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5z
ZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBo
dHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJl
LTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlm
aWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAg
ICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cu
dzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxk
NiI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51
bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZy
YW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAg
IElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwot
Ly8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0
YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBp
bW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRo
ZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9
ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRv
Y3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRl
ciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwot
ICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5k
b2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAg
fQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIp
OwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0
VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewot
ICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMg
bWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3lj
aHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkg
c3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBw
YWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0
aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBp
ZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBs
ZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQ3JlYXRlcyBhbiBuZXcgYXR0cmlidXRlIG5v
ZGUgYW5kIGFwcGVuZHMgYSB0ZXh0IG5vZGUuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBA
c2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xl
dmVsLW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5
OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTE4NEU3MTA3Ci0q
LwotZnVuY3Rpb24gaGNfYXR0cmFwcGVuZGNoaWxkNigpIHsKLSAgIHZhciBzdWNjZXNzOwotICAg
IGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJhcHBlbmRjaGlsZDYiKSAh
PSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAg
ICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxl
QXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciBy
ZXR2YWw7Ci0gICAgICB2YXIgbGFzdENoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0g
bnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAg
ICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYs
ICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIHRpdGxlQXR0ciA9IGRvYy5jcmVhdGVBdHRyaWJ1
dGUoInRpdGxlIik7Ci0gICAgICB0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgiWWVzdGVy
ZGF5Iik7Ci0gICAgICByZXR2YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOwot
ICAgICAgdmFsdWUgPSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0
clZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSB0aXRsZUF0dHIubm9k
ZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJZZXN0ZXJkYXki
LHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHJldHZhbC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2Vy
dEVxdWFscygicmV0dmFsVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICBsYXN0Q2hp
bGQgPSB0aXRsZUF0dHIubGFzdENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGxhc3RDaGlsZC5ub2Rl
VmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygibGFzdENoaWxkVmFsdWUiLCJZZXN0ZXJkYXki
LHZhbHVlKTsKLSAgICAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhj
X2F0dHJhcHBlbmRjaGlsZDYoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczEtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTdiZGMzODkwMi4uMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3
dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2Rl
czEKLVN0YXR1czoJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxLmh0bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczEuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDNiMGI4ZWU1YWIuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9o
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMS5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQu
MDEvL0VOIiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgot
PCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+
PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJzZWxmaHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJjaGlsZG5vZGVzMS5qcyI+PC9zY3JpcHQ+PHNjcmlw
dCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRU
ZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0g
PHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9u
Zz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwv
c3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5v
cnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxl
bT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFT
ZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMg
YW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0
YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1
cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Illl
cyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4K
LSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAg
PGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAg
PHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8g
Qm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBl
cnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1h
bGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0
aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVt
PkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5D
b21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1h
bGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmlu
ZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxLmpz
IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzA4OGY0M2E3Ni4uMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMx
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKp
IDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIElu
c3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9y
IEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmln
aHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4g
U29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29w
eXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBV
UkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZp
ZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1
cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNf
YXR0cmNoaWxkbm9kZXMxIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZh
ciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkg
dGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1
aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywg
YXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3Ro
ZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUg
ZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcg
dGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0
VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBj
cmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAv
LwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9j
c0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYg
KHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhp
cy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9j
IiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsK
LSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9
IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7
Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQot
Ly8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8g
ICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8v
ICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwK
LS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8g
ICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBs
ZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VT
dGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1DaGVja3MgdGhhdCBO
b2RlLmNoaWxkTm9kZXMgZm9yIGFuIGF0dHJpYnV0ZSBub2RlIGNvbnRhaW5zCi10aGUgZXhwZWN0
ZWQgdGV4dCBub2RlLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJ
RC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2
ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0xNDUxNDYwOTg3Ci0qLwotZnVuY3Rpb24g
aGNfYXR0cmNoaWxkbm9kZXMxKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0
aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cmNoaWxkbm9kZXMxIikgIT0gbnVsbCkgcmV0dXJu
OwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5v
ZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2
YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgY2hpbGROb2RlczsKLSAg
ICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9j
KSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0K
LSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3Jv
bnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVz
dE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2Rl
LmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVt
KCJ0aXRsZSIpOwotICAgICAgY2hpbGROb2RlcyA9IHRpdGxlQXR0ci5jaGlsZE5vZGVzOwotCi0g
ICAgICBhc3NlcnRTaXplKCJjaGlsZE5vZGVzU2l6ZSIsMSxjaGlsZE5vZGVzKTsKLXRleHROb2Rl
ID0gY2hpbGROb2Rlcy5pdGVtKDApOwotICAgICAgdmFsdWUgPSB0ZXh0Tm9kZS5ub2RlVmFsdWU7
Ci0KLSAgICAgIGFzc2VydEVxdWFscygiY2hpbGQxSXNZZXMiLCJZZXMiLHZhbHVlKTsKLSAgICAg
ICB0ZXh0Tm9kZSA9IGNoaWxkTm9kZXMuaXRlbSgxKTsKLSAgICAgIGFzc2VydE51bGwoInNlY29u
ZEl0ZW1Jc051bGwiLHRleHROb2RlKTsKLSAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVz
dCgpIHsKLSAgIGhjX2F0dHJjaGlsZG5vZGVzMSgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMi1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiOTgyNjQzNzE2Li4wMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hp
bGRub2RlczItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0
OglodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0
dHJjaGlsZG5vZGVzMgotU3RhdHVzOglTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9k
b20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczIuaHRtbCBiL0xheW91dFRlc3Rz
L2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMi5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5YjAwMDI3NTA1OS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMyLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8v
RFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJp
Y3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFk
PjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04
IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmNoaWxkbm9kZXMyLmpzIj48L3Nj
cmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRl
KCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21w
bGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1h
cnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxz
dXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZ
ZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4K
LSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMg
aXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQy
OwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBh
IHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3Vw
PjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
IiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwv
c3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAw
MDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xh
c3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0g
PHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4K
LSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgot
ICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBo
YTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgot
IDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+
Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+
Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4g
Um9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hp
bGRub2RlczIuanMgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hp
bGRub2RlczIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YzZjZDUwNGU1Li4w
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
Y2hpbGRub2RlczIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotCi0vKgotQ29w
eXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3Nh
Y2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNv
cnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkp
LiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhl
IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVn
YWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAg
ICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1
cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsK
LSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZl
bDEvY29yZS9oY19hdHRyY2hpbGRub2RlczIiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0x
MDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcg
dGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBl
eGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0
YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxl
dGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hl
biBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2Uo
KSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwot
ICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0
aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwot
Ci0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7
Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBk
b2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChk
b2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2Fk
ZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAg
ICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1
aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9
Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRp
b24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVz
dHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMg
Y29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxv
d3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlv
biBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAg
IHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUNo
ZWNrcyBOb2RlLmNoaWxkTm9kZXMgZm9yIGFuIGF0dHJpYnV0ZSB3aXRoIG11bHRpcGxlIGNoaWxk
IG5vZGVzLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2
NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0x
OTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0xNDUxNDYwOTg3Ci0qLwotZnVuY3Rpb24gaGNfYXR0
cmNoaWxkbm9kZXMyKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXph
dGlvbihidWlsZGVyLCAiaGNfYXR0cmNoaWxkbm9kZXMyIikgIT0gbnVsbCkgcmV0dXJuOwotICAg
IHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0g
ICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFs
dWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgY2hpbGROb2RlczsKLSAgICAgIHZh
ciByZXR2YWw7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5
cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5k
b2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIp
OwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0i
KTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0
ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVz
LmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIGNoaWxkTm9kZXMgPSB0aXRsZUF0dHIuY2hp
bGROb2RlczsKLQotICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoInRlcmRheSIp
OwotICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmFwcGVuZENoaWxkKHRleHROb2RlKTsKLSAgICAg
IGFzc2VydFNpemUoImNoaWxkTm9kZXNTaXplIiwyLGNoaWxkTm9kZXMpOwotdGV4dE5vZGUgPSBj
aGlsZE5vZGVzLml0ZW0oMCk7Ci0gICAgICB2YWx1ZSA9IHRleHROb2RlLm5vZGVWYWx1ZTsKLQot
ICAgICAgYXNzZXJ0RXF1YWxzKCJjaGlsZDFJc1llcyIsIlllcyIsdmFsdWUpOwotICAgICAgIHRl
eHROb2RlID0gY2hpbGROb2Rlcy5pdGVtKDEpOwotICAgICAgdmFsdWUgPSB0ZXh0Tm9kZS5ub2Rl
VmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiY2hpbGQySXNUZXJkYXkiLCJ0ZXJkYXkiLHZh
bHVlKTsKLSAgICAgICB0ZXh0Tm9kZSA9IGNoaWxkTm9kZXMuaXRlbSgyKTsKLSAgICAgIGFzc2Vy
dE51bGwoInRoaXJkSXRlbUlzTnVsbCIsdGV4dE5vZGUpOwotICAgIAotfQotCi0KLQotCi1mdW5j
dGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmNoaWxkbm9kZXMyKCk7Ci19CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2RlMS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVu
b2RlMS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzODVlYWM0
NGJiLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRyY2xvbmVub2RlMS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLVRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmNsb25lbm9kZTEKLVN0YXR1czoJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9kZTEuaHRtbCBiL0xheW91
dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjbG9uZW5vZGUxLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlODg0Nzc4MjFmLi4wMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2RlMS5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9X
M0MvL0RURCBIVE1MIDQuMDEvL0VOIiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQv
c3RyaWN0LmR0ZCIgPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48
aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD1VVEYtOCI+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJzZWxmaHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJV
VEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJjbG9uZW5vZGUxLmpzIj48
L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBs
ZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRD
b21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0
IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0g
IDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxl
PSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwv
cD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1Ro
aXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtl
bnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0
byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8
c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0i
WWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+
Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25l
czwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAw
LDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIg
Y2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+
Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9u
Zz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3Vw
PgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZh
bHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9w
PgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJv
bmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9z
dXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRp
Yy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
Y2xvbmVub2RlMS5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJj
bG9uZW5vZGUxLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjY3ZTg1NTg1NS4u
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmNsb25lbm9kZTEuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotCi0vKgotQ29w
eXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3Nh
Y2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNv
cnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkp
LiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhl
IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVn
YWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAg
ICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1
cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsK
LSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZl
bDEvY29yZS9oY19hdHRyY2xvbmVub2RlMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEw
MDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0
aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4
Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3Rh
cnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0
ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVu
IGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgp
IHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0g
ICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRp
b24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0K
LSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsK
LSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRv
Y1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRv
Y1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRl
ZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAg
ICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVp
bGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0K
LX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlv
biBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0
cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBj
b21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93
cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9u
IGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAg
c2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQXBw
ZW5kcyBhIHRleHQgbm9kZSB0byBhbiBhdHRyaWJ1dGUgYW5kIGNsb25lcyB0aGUgbm9kZS4KLQot
KiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9S
RUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2
ZWwtb25lLWNvcmUjSUQtM0EwRUQwQTQKLSovCi1mdW5jdGlvbiBoY19hdHRyY2xvbmVub2RlMSgp
IHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwg
ImhjX2F0dHJjbG9uZW5vZGUxIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAg
ICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmli
dXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIg
dGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGxhc3RDaGlsZDsKLSAgICAg
IHZhciBjbG9uZWRUaXRsZTsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAg
ICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYg
PSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhj
X3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
YWNyb255bSIpOwotICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAg
YXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0
dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgdGV4dE5vZGUgPSBkb2MuY3Jl
YXRlVGV4dE5vZGUoInRlcmRheSIpOwotICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmFwcGVuZENo
aWxkKHRleHROb2RlKTsKLSAgICAgIGNsb25lZFRpdGxlID0gdGl0bGVBdHRyLmNsb25lTm9kZShm
YWxzZSk7Ci0gICAgICB0ZXh0Tm9kZS5ub2RlVmFsdWUgPSAidGV4dF9ub2RlX25vdF9jbG9uZWQi
OwotCi0gICAgICB2YWx1ZSA9IGNsb25lZFRpdGxlLnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVh
bHMoImF0dHJWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gY2xvbmVk
VGl0bGUubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJZ
ZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICBsYXN0Q2hpbGQgPSBjbG9uZWRUaXRsZS5sYXN0Q2hp
bGQ7Ci0KLSAgICAgIHZhbHVlID0gbGFzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0
RXF1YWxzKCJsYXN0Q2hpbGRWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIAotfQotCi0K
LQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmNsb25lbm9kZTEoKTsKLX0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJoYXNjaGls
ZG5vZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJoYXNjaGlsZG5vZGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZmVmY2VhZGM1ZDguLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJoYXNjaGlsZG5vZGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVz
dC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaGFzY2hpbGRub2RlcwotU3RhdHVzOglTdWNjZXNz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaGFz
Y2hpbGRub2Rlcy5odG1sIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmhhc2NoaWxkbm9kZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3ODRj
ZjMwMzIuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJoYXNjaGlsZG5vZGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAg
ICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMg
Y29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3Rh
ZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpz
Ij48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iaGNfYXR0cmhhc2NoaWxkbm9kZXMuanMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0ndGV4
dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9z
Y3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+
RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2Rl
PkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZh
cj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERh
bGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwv
ZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRo
IEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50
IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25n
PgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+
RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBE
YWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAw
MDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFy
dG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRh
OzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZp
bmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2Vt
PgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGly
ZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0g
IDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFs
bGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9l
bT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3Bl
Y2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0g
IDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1
NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJoYXNjaGlsZG5vZGVzLmpzIGIvTGF5b3V0
VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmhhc2NoaWxkbm9kZXMuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNDg3YzNiZTFjLi4wMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaGFzY2hpbGRub2Rlcy5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAx
LTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1
dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZv
cm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBS
ZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3
YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50
eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
IAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdo
dC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRo
YXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9m
IHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJo
dHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJo
YXNjaGlsZG5vZGVzIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBi
dWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhl
IHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRl
LgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5
bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3
aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhj
ZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhl
IGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQ
YWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVh
dGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwot
ICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xv
YWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5
cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5k
b2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwg
ImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAg
ICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNh
dGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0g
ICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8K
LS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAg
ICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAg
V2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8v
ICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAg
ICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRl
KCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0
dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1DaGVja3MgdGhhdCBOb2Rl
Lmhhc0NoaWxkTm9kZXMoKSBpcyB0cnVlIGZvciBhbiBhdHRyaWJ1dGUgd2l0aCBjb250ZW50Lgot
Ci0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4
L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9s
ZXZlbC1vbmUtY29yZSNJRC04MTA1OTQxODcKLSovCi1mdW5jdGlvbiBoY19hdHRyaGFzY2hpbGRu
b2RlcygpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVp
bGRlciwgImhjX2F0dHJoYXNjaGlsZG5vZGVzIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBk
b2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2
YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgaGFzQ2hpbGRO
b2RlczsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9m
KHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsK
LSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0g
ICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwot
ICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9
IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0
TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgaGFzQ2hpbGROb2RlcyA9IHRpdGxlQXR0ci5oYXND
aGlsZE5vZGVzKCk7Ci0gICAgICBhc3NlcnRUcnVlKCJoYXNDaGlsZHJlbklzVHJ1ZSIsaGFzQ2hp
bGROb2Rlcyk7Ci0KLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJo
YXNjaGlsZG5vZGVzKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9k
b20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMTQ5MmEyOTQxLi4wMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMS1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93
d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJl
Zm9yZTEKLVN0YXR1czoJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTEuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9o
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUxLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk5ZDdhZTkwYWU5Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMS5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RU
RCBIVE1MIDQuMDEvL0VOIiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0
LmR0ZCIgPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD1VVEYtOCI+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJzZWxmaHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJpbnNlcnRiZWZvcmUxLmpzIj48L3Nj
cmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRl
KCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21w
bGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1h
cnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxz
dXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZ
ZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4K
LSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMg
aXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQy
OwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBh
IHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3Vw
PjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
IiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwv
c3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAw
MDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xh
c3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0g
PHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4K
LSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgot
ICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBo
YTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgot
IDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+
Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+
Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4g
Um9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5z
ZXJ0YmVmb3JlMS5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJp
bnNlcnRiZWZvcmUxLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWFhOTllMjFi
Yi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cmluc2VydGJlZm9yZTEuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotCi0v
KgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAot
KE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNo
IENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZl
cnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRp
dW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAv
KioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJl
dHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVS
SSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0
ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9h
ZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVu
Y3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAg
cnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1
cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRp
bmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0
byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJh
aXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNl
dFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0g
ICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJv
dyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWls
ZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVm
ID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0g
ICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBw
cmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAo
ZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRl
JzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9u
RXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUn
OwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUg
Y29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4g
c2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3Vt
ZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdo
aWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4K
LWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsK
LSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoq
Ci0qIAotQXBwZW5kcyBhIHRleHQgbm9kZSB0byBhbiBhdHRyaWJ1dGUgYW5kIGNoZWNrcyBpZiB0
aGUgdmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLQotKiBAYXV0aG9yIEN1cnQg
QXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEt
MTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53
My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQt
OTUyMjgwNzI3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmluc2VydGJlZm9yZTEoKSB7Ci0gICB2YXIg
c3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRyaW5z
ZXJ0YmVmb3JlMSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFj
cm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0g
ICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2Rl
OwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBmaXJzdENoaWxkOwotICAgICAgdmFyIGxh
c3RDaGlsZDsKLSAgICAgIHZhciByZWZDaGlsZCA9IG51bGw7Ci0KLSAgICAgIAotICAgICAgdmFy
IGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVk
JykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxv
YWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlzdCA9IGRvYy5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUgPSBhY3Jvbnlt
TGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0K
LSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAg
ICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoInRlcmRheSIpOwotICAgICAgcmV0dmFs
ID0gdGl0bGVBdHRyLmluc2VydEJlZm9yZSh0ZXh0Tm9kZSxyZWZDaGlsZCk7Ci0gICAgICB2YWx1
ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJZ
ZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0K
LSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUpOwot
ICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJy
ZXR2YWxWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0
dHIuZmlyc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsKLQot
ICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJzdENoaWxkVmFsdWUiLCJZZXMiLHZhbHVlKTsKLSAgICAg
ICBsYXN0Q2hpbGQgPSB0aXRsZUF0dHIubGFzdENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGxhc3RD
aGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygibGFzdENoaWxkVmFsdWUiLCJ0
ZXJkYXkiLHZhbHVlKTsKLSAgICAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsK
LSAgIGhjX2F0dHJpbnNlcnRiZWZvcmUxKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9k
b20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMi1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZjY3ZTE5ZjhkLi4wMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5z
ZXJ0YmVmb3JlMi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRl
c3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNf
YXR0cmluc2VydGJlZm9yZTIKLVN0YXR1czoJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTIuaHRtbCBiL0xheW91
dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUyLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3ZmZmNzliYmQyLi4wMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMi5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElD
ICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIv
aHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08
aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmaHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFy
c2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJpbnNlcnRiZWZv
cmUyLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24g
bG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxv
YWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25n
Pk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAg
ICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3Jv
bnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3Jv
bnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBS
YXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVy
IDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJl
ZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9j
b2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255
bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8
L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9n
ZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0g
IDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255
bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25u
b3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1
LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBj
bGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9u
eW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15
ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+
OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4x
ODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwv
Ym9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRyaW5zZXJ0YmVmb3JlMi5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjYzRmNTBlMzAwMS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEg
KzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENv
bnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9w
ZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNz
LCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUg
Ci1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMu
b3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSov
Ci0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3Qu
Ci0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9u
IGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9E
T00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMiI7Ci0gICB9Ci0K
LXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0v
LyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZv
cmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFy
ZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRv
Y3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAg
ICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQot
Ly8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8K
LWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsK
LSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxk
ZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNv
bmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAg
ICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRl
ZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9j
c0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAK
LSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVz
ID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaElu
aXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMg
PSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2Fk
IHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMg
bG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBp
cyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBi
ZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9h
ZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9
Ci19Ci0KLQotLyoqCi0qIAotUHJlcGVuZHMgYSB0ZXh0IG5vZGUgdG8gYW4gYXR0cmlidXRlIGFu
ZCBjaGVja3MgaWYgdGhlIHZhbHVlIG9mCi10aGUgYXR0cmlidXRlIGlzIGNoYW5nZWQuCi0KLSog
QGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVD
LURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2Vl
IGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVs
LW9uZS1jb3JlI0lELTk1MjI4MDcyNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJpbnNlcnRiZWZvcmUy
KCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVy
LCAiaGNfYXR0cmluc2VydGJlZm9yZTIiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsK
LSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBh
dHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAg
IHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgbGFzdENoaWxkOwot
ICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIgcmVmQ2hpbGQ7Ci0gICAgICAKLSAgICAg
IHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVm
aW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2Mg
PSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBk
b2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNy
b255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVz
OwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsK
LSAgICAgIHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIHJl
ZkNoaWxkID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAgIHJldHZhbCA9IHRpdGxlQXR0
ci5pbnNlcnRCZWZvcmUodGV4dE5vZGUscmVmQ2hpbGQpOwotICAgICAgdmFsdWUgPSB0aXRsZUF0
dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0clZhbHVlIiwidGVyZGF5WWVzIix2
YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSB0aXRsZUF0dHIubm9kZVZhbHVlOwotCi0gICAgICBhc3Nl
cnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJ0ZXJkYXlZZXMiLHZhbHVlKTsKLSAgICAgICB2YWx1
ZSA9IHJldHZhbC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygicmV0dmFsVmFsdWUi
LCJ0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICBmaXJzdENoaWxkID0gdGl0bGVBdHRyLmZpcnN0Q2hp
bGQ7Ci0KLSAgICAgIHZhbHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2Vy
dEVxdWFscygiZmlyc3RDaGlsZFZhbHVlIiwidGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgbGFzdENo
aWxkID0gdGl0bGVBdHRyLmxhc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBsYXN0Q2hpbGQubm9k
ZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImxhc3RDaGlsZFZhbHVlIiwiWWVzIix2YWx1
ZSk7Ci0gICAgICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRy
aW5zZXJ0YmVmb3JlMigpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2RiM2UzNjdhYS4uMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0OglodHRwOi8v
d3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRi
ZWZvcmUzCi1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMy5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5ODcwZDQ4YmY5ZC4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9E
VEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmlj
dC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWw+PGhlYWQ+
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0PjxzY3JpcHQgY2hhcnNldD0iVVRGLTgi
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyaW5zZXJ0YmVmb3JlMy5qcyI+PC9z
Y3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0
ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29t
cGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBN
YXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8
c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0i
WWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+
Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlz
IGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50
MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8g
YSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1
cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8
L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCww
MDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNs
YXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgot
IDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+
Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4K
LSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxw
aGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4K
LSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25n
PgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3Vw
PgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMu
IFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmlu
c2VydGJlZm9yZTMuanMgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
aW5zZXJ0YmVmb3JlMy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NiMjRjZGMx
YmEuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJpbnNlcnRiZWZvcmUzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQot
LyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAK
LShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJj
aCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2
ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0
aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAg
LyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEBy
ZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRV
UkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3Vp
dGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMiOwotICAgfQotCi12YXIgZG9jc0xv
YWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAg
IHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmln
dXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2Fk
aW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQg
dG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICBy
YWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBz
ZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewot
ICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhy
b3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVp
bGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1Jl
ZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewot
ICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0g
cHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYg
KGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0
ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlv
bkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRl
JzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhl
IGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGlu
IHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1
bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3
aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQu
Ci1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7
Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8q
KgotKiAKLUFwcGVuZHMgYSBkb2N1bWVudCBmcmFnbWVudCB0byBhbiBhdHRyaWJ1dGUgYW5kIGNo
ZWNrcyBpZiB0aGUgdmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLQotKiBAYXV0
aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9N
LUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25l
LWNvcmUjSUQtOTUyMjgwNzI3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmluc2VydGJlZm9yZTMoKSB7
Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJo
Y19hdHRyaW5zZXJ0YmVmb3JlMyIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAg
ICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJp
YnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFy
IHRlck5vZGU7Ci0gICAgICB2YXIgZGF5Tm9kZTsKLSAgICAgIHZhciBkb2NGcmFnOwotICAgICAg
dmFyIHJldHZhbDsKLSAgICAgIHZhciBmaXJzdENoaWxkOwotICAgICAgdmFyIGxhc3RDaGlsZDsK
LSAgICAgIHZhciByZWZDaGlsZCA9IG51bGw7Ci0KLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9
IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAg
ICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVm
LCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVt
KDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRp
dGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgdGVyTm9k
ZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgidGVyIik7Ci0gICAgICBkYXlOb2RlID0gZG9jLmNyZWF0
ZVRleHROb2RlKCJkYXkiKTsKLSAgICAgIGRvY0ZyYWcgPSBkb2MuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpOwotICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGlsZCh0ZXJOb2RlKTsKLSAg
ICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5kQ2hpbGQoZGF5Tm9kZSk7Ci0gICAgICByZXR2YWwg
PSB0aXRsZUF0dHIuaW5zZXJ0QmVmb3JlKGRvY0ZyYWcscmVmQ2hpbGQpOwotICAgICAgdmFsdWUg
PSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0clZhbHVlIiwiWWVz
dGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSB0aXRsZUF0dHIubm9kZVZhbHVlOwotCi0g
ICAgICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAg
ICAgICB2YWx1ZSA9IHJldHZhbC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydE51bGwoInJldHZh
bFZhbHVlIix2YWx1ZSk7Ci0gICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5maXJzdENoaWxkOwot
Ci0gICAgICB2YWx1ZSA9IGZpcnN0Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVh
bHMoImZpcnN0Q2hpbGRWYWx1ZSIsIlllcyIsdmFsdWUpOwotICAgICAgIGxhc3RDaGlsZCA9IHRp
dGxlQXR0ci5sYXN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gbGFzdENoaWxkLm5vZGVWYWx1ZTsK
LQotICAgICAgYXNzZXJ0RXF1YWxzKCJsYXN0Q2hpbGRWYWx1ZSIsImRheSIsdmFsdWUpOwotICAg
ICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmluc2VydGJl
Zm9yZTMoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJpbnNlcnRiZWZvcmU0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMjY0ZDQ3NWRkMTAuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5v
cmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNAot
U3RhdHVzOglTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEv
Y29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNC5odG1sIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjZhNGVhOGFlNWEuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9o
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0Lmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwg
NC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+
Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04
Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmluc2VydGJlZm9yZTQuanMiPjwvc2NyaXB0Pjxz
Y3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0
YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCki
PgotIDxwPgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9z
dHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41Niww
MDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIz
MCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgot
ICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENE
QVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlz
IGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZh
bXA7dGFiOzwvc3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAw
PC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNz
PSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0g
PHA+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+
Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+
Ci0gIDx2YXI+JmRlbHRhOzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8i
PlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAg
PGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29k
ZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+
RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+Mjcg
U291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNv
ZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZh
cj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJ
cnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZv
cmU0LmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJl
Zm9yZTQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMGU2MWRjYTA0Li4wMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5z
ZXJ0YmVmb3JlNC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8qCi1Db3B5
cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2Fj
aHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29y
dGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSku
IEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUg
aW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdh
bC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAg
ICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVy
aSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewot
ICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVs
MS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0IjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAt
MTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBp
cyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5n
IHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24g
ZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBz
dGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBs
ZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdo
ZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdl
KCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8K
LSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2Vw
dGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsK
LQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxs
OwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAg
ZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQo
ZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9h
ZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAg
ICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihi
dWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAg
fQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0
aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRl
c3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFz
IGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxs
b3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rp
b24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAg
ICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1Q
cmVwZW5kcyBhIGRvY3VtZW50IGZyYWdtZW50IHRvIGFuIGF0dHJpYnV0ZSBhbmQgY2hlY2tzIGlm
IHRoZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgotCi0qIEBhdXRob3IgQ3Vy
dCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwt
MS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJ
RC05NTIyODA3MjcKLSovCi1mdW5jdGlvbiBoY19hdHRyaW5zZXJ0YmVmb3JlNCgpIHsKLSAgIHZh
ciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJp
bnNlcnRiZWZvcmU0IikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIg
YWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsK
LSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGVyTm9k
ZTsKLSAgICAgIHZhciBkYXlOb2RlOwotICAgICAgdmFyIGRvY0ZyYWc7Ci0gICAgICB2YXIgcmV0
dmFsOwotICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIgbGFzdENoaWxkOwotICAgICAg
dmFyIHJlZkNoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlm
ICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRo
aXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3Rh
ZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3Jv
bnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRy
aWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmli
dXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXJOb2RlID0gZG9jLmNyZWF0ZVRl
eHROb2RlKCJ0ZXIiKTsKLSAgICAgIGRheU5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoImRheSIp
OwotICAgICAgZG9jRnJhZyA9IGRvYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICBy
ZXR2YWwgPSBkb2NGcmFnLmFwcGVuZENoaWxkKHRlck5vZGUpOwotICAgICAgcmV0dmFsID0gZG9j
RnJhZy5hcHBlbmRDaGlsZChkYXlOb2RlKTsKLSAgICAgIHJlZkNoaWxkID0gdGl0bGVBdHRyLmZp
cnN0Q2hpbGQ7Ci0KLSAgICAgIHJldHZhbCA9IHRpdGxlQXR0ci5pbnNlcnRCZWZvcmUoZG9jRnJh
ZyxyZWZDaGlsZCk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNz
ZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJ0ZXJkYXlZZXMiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9
IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1
ZSIsInRlcmRheVllcyIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsK
LQotICAgICAgYXNzZXJ0TnVsbCgicmV0dmFsVmFsdWUiLHZhbHVlKTsKLSAgICBmaXJzdENoaWxk
ID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gZmlyc3RDaGlsZC5ub2Rl
VmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiZmlyc3RDaGlsZFZhbHVlIiwidGVyIix2YWx1
ZSk7Ci0gICAgICAgbGFzdENoaWxkID0gdGl0bGVBdHRyLmxhc3RDaGlsZDsKLQotICAgICAgdmFs
dWUgPSBsYXN0Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImxhc3RDaGls
ZFZhbHVlIiwiWWVzIix2YWx1ZSk7Ci0gICAgICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRl
c3QoKSB7Ci0gICBoY19hdHRyaW5zZXJ0YmVmb3JlNCgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9y
ZTUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2I1YjY5NDM3
Zi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cmluc2VydGJlZm9yZTUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCww
IEBACi1UZXN0OglodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9j
b3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1Ci1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNS5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2EzZTQxYjljYi4uMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJl
Zm9yZTUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
IFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93d3cudzMu
b3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAx
Li0tPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0PjxzY3Jp
cHQgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyaW5z
ZXJ0YmVmb3JlNS5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1
bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJv
ZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAg
PHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29k
ZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgot
ICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1
MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5N
YXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNl
IG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdp
dGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3Jl
dGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAg
PGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwot
IDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ry
b25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9j
b2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3Jv
bnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8
L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVu
eSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAg
PHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9
IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2
PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJv
YmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgot
ICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9
IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8
L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTUuanMgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTk3MzdlZGUwZGIuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9o
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1LmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMTUzICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRl
IFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5
LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRo
ZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdv
cmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0g
aW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8v
d3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIx
MjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRo
ZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1m
dW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3Jn
LzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTUiOwot
ICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwot
Ci0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdv
cmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0
aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAg
ICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMK
LS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRp
YXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVz
dC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVu
bmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVu
dCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBj
cmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotICAgICAgIGNoZWNrRmVhdHVyZSgiWE1MIiwgbnVs
bCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0g
bnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAg
ICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVs
b2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9j
c0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsK
LSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJy
b3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwot
ICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29t
cGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0
VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50
IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNo
IGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1
bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAg
ICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0q
IAotQXR0ZW1wdCB0byBhcHBlbmQgYSBDREFUQVNlY3Rpb24gdG8gYW4gYXR0cmlidXRlIHdoaWNo
IHNob3VsZCByZXN1bHQKLWluIGEgSElFUkFSQ0hZX1JFUVVFU1RfRVJSLgotCi0qIEBhdXRob3Ig
Q3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2
ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8v
d3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29y
ZSNJRC05NTIyODA3MjcKLSovCi1mdW5jdGlvbiBoY19hdHRyaW5zZXJ0YmVmb3JlNSgpIHsKLSAg
IHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0
dHJpbnNlcnRiZWZvcmU1IikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2
YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRl
czsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4
dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIHJlZkNoaWxkID0gbnVsbDsKLQot
ICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5k
b2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAg
fQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFj
cm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0
ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5v
ZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0
ZW0oInRpdGxlIik7Ci0gICAgICAKLQlpZigKLQkKLQkoYnVpbGRlci5jb250ZW50VHlwZSA9PSAi
dGV4dC9odG1sIikKLQotCSkgewotCQotCXsKLQkJc3VjY2VzcyA9IGZhbHNlOwotCQl0cnkgewot
ICAgICAgICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlQ0RBVEFTZWN0aW9uKCJ0ZXJkYXkiKTsK
LSAgICAgICAgfQotCQljYXRjaChleCkgewotICAgICAgc3VjY2VzcyA9ICh0eXBlb2YoZXguY29k
ZSkgIT0gJ3VuZGVmaW5lZCcgJiYgZXguY29kZSA9PSA5KTsKLQkJfQotCQlhc3NlcnRUcnVlKCJ0
aHJvd19OT1RfU1VQUE9SVEVEX0VSUiIsc3VjY2Vzcyk7Ci0JfQotCi0JfQotCQotCQllbHNlIHsK
LQkJCXRleHROb2RlID0gZG9jLmNyZWF0ZUNEQVRBU2VjdGlvbigidGVyZGF5Iik7Ci0gICAgICAK
LQl7Ci0JCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJdHJ5IHsKLSAgICAgICAgICAgIHJldHZhbCA9IHRp
dGxlQXR0ci5pbnNlcnRCZWZvcmUodGV4dE5vZGUscmVmQ2hpbGQpOwotICAgICAgICB9Ci0JCWNh
dGNoKGV4KSB7Ci0gICAgICBzdWNjZXNzID0gKHR5cGVvZihleC5jb2RlKSAhPSAndW5kZWZpbmVk
JyAmJiBleC5jb2RlID09IDMpOwotCQl9Ci0JCWFzc2VydFRydWUoInRocm93X0hJRVJBUkNIWV9S
RVFVRVNUX0VSUiIsc3VjY2Vzcyk7Ci0JfQotCi0JCX0KLQkKLX0KLQotCi0KLQotZnVuY3Rpb24g
cnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJpbnNlcnRiZWZvcmU1KCk7Ci19CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0
YmVmb3JlNi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlM2Zi
ZmNjNTFmLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRyaW5zZXJ0YmVmb3JlNi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwz
ICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2
ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYJCi1TdGF0dXM6CWZhaWx1cmUKLURldGFpbDoJ
dGhyb3dfV1JPTkdfRE9DVU1FTlRfRVJSOiBhc3NlcnRUcnVlIGZhaWxlZApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYuaHRt
bCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU2
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ODYzOWQzZjFjLi4wMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0
YmVmb3JlNi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0
bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAKLSAgICAiaHR0cDovL3d3dy53
My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVy
IDEuLS0+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmaHRtbC5qcyI+PC9zY3JpcHQ+PHNj
cmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJp
bnNlcnRiZWZvcmU2LmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+
ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48
Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgot
ICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9j
b2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+
Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4
NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25n
Pk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVu
Y2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24g
d2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2Vj
cmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgot
ICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7
Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxz
dHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8
L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFj
cm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1
MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5K
ZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgot
ICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRs
ZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1
NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+
Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+
Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRs
ZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgot
IDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNi5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU2LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkYzA0ZjYyN2RhNy4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwxNDIgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdp
ZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xv
Z3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1h
dGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMg
d29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsx
XSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6
Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAw
MjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMg
dGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8K
LWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5v
cmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNiI7
Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7
Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1l
d29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElm
IHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8g
ICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1
cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1l
ZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0
ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdy
dW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3Vt
ZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9
IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAg
ICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2Mp
ICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQot
ICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwot
ICAgICAgICAKLSAgICAgIHZhciBvdGhlckRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9m
KHRoaXMub3RoZXJEb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIG90aGVyRG9jUmVmID0g
dGhpcy5vdGhlckRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChvdGhl
ckRvY1JlZiwgIm90aGVyRG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChk
b2NzTG9hZGVkID09IDIpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUn
OwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25F
cnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7
Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBj
b21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBz
ZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1l
bnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hp
Y2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgot
ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMikgewot
ICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioK
LSogCi1BdHRlbXB0IHRvIGFwcGVuZCBhIHRleHQgbm9kZSBmcm9tIGFub3RoZXIgZG9jdW1lbnQg
dG8gYW4gYXR0cmlidXRlIHdoaWNoIHNob3VsZCByZXN1bHQKLWluIGEgV1JPTkdfRE9DVU1FTlRf
RVJSLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9U
Ui8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYw
MjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4
MTAwMS9sZXZlbC1vbmUtY29yZSNJRC05NTIyODA3MjcKLSovCi1mdW5jdGlvbiBoY19hdHRyaW5z
ZXJ0YmVmb3JlNigpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRp
b24oYnVpbGRlciwgImhjX2F0dHJpbnNlcnRiZWZvcmU2IikgIT0gbnVsbCkgcmV0dXJuOwotICAg
IHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0g
ICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFs
dWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIHJl
ZkNoaWxkID0gbnVsbDsKLQotICAgICAgdmFyIG90aGVyRG9jOwotICAgICAgCi0gICAgICB2YXIg
ZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQn
KSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9h
ZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIAotICAgICAgdmFyIG90aGVyRG9j
UmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5vdGhlckRvYykgIT0gJ3VuZGVmaW5l
ZCcpIHsKLSAgICAgICAgb3RoZXJEb2NSZWYgPSB0aGlzLm90aGVyRG9jOwotICAgICAgfQotICAg
ICAgb3RoZXJEb2MgPSBsb2FkKG90aGVyRG9jUmVmLCAib3RoZXJEb2MiLCAiaGNfc3RhZmYiKTsK
LSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7
Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVz
ID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5n
ZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXh0Tm9kZSA9IG90aGVyRG9jLmNyZWF0ZVRl
eHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIAotCXsKLQkJc3VjY2VzcyA9IGZhbHNlOwotCQl0cnkg
ewotICAgICAgICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmluc2VydEJlZm9yZSh0ZXh0Tm9kZSxy
ZWZDaGlsZCk7Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlw
ZW9mKGV4LmNvZGUpICE9ICd1bmRlZmluZWQnICYmIGV4LmNvZGUgPT0gNCk7Ci0JCX0KLQkJYXNz
ZXJ0VHJ1ZSgidGhyb3dfV1JPTkdfRE9DVU1FTlRfRVJSIixzdWNjZXNzKTsKLQl9Ci0KLX0KLQot
Ci0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJpbnNlcnRiZWZvcmU2KCk7Ci19
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5z
ZXJ0YmVmb3JlNy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRyaW5zZXJ0YmVmb3JlNy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDg4MGVkNWM2MDNlLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9N
LVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTcKLVN0YXR1czoJU3Vj
Y2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmluc2VydGJlZm9yZTcuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJpbnNlcnRiZWZvcmU3Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUz
MDRhM2Y2OWRmLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEv
Y29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAs
MCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAK
LSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBUaGlz
IGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxlPmhj
X3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmaHRt
bC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9ImhjX2F0dHJpbnNlcnRiZWZvcmU3LmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9
J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsg
fTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAg
PGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8
Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0g
IDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZl
LiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAw
MDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24g
d2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGph
Y2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0
cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8
dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0
YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5E
ZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZk
ZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcg
SXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0
PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVs
IERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQu
IERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAw
NTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVy
IFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFz
IDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNy5qcyBiL0xh
eW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU3LmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDE0NTAyOTUwNS4uMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTcu
anMKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkg
MjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5z
dGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3Ig
SW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdo
dHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBT
b2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5
cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVS
SSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmll
ciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVy
biAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19h
dHRyaW5zZXJ0YmVmb3JlNyI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12
YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5
IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBz
dWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMs
IGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90
aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhl
IGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5n
IHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNl
dFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAg
Y3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAg
Ly8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0gICAgICAgY2hl
Y2tGZWF0dXJlKCJYTUwiLCBudWxsKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAK
LSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0g
J3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAg
ICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAg
ICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VT
dGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNh
dGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0
YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2Qg
aXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3Vz
IGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJv
bm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3Rh
dHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0
IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2Rv
Y3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwot
ICAgIH0KLX0KLQotCi0vKioKLSogCi1BcHBlbmRzIGEgZG9jdW1lbnQgZnJhZ21lbnQgY29udGFp
bmluZyBhIENEQVRBU2VjdGlvbiB0byBhbiBhdHRyaWJ1dGUuCi0KLSogQGF1dGhvciBDdXJ0IEFy
bm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5
OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMu
b3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTk1
MjI4MDcyNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJpbnNlcnRiZWZvcmU3KCkgewotICAgdmFyIHN1
Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cmluc2Vy
dGJlZm9yZTciKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3Jv
bnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAg
ICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIHZhciB0ZXJOb2RlOwot
ICAgICAgdmFyIGRheU5vZGU7Ci0gICAgICB2YXIgZG9jRnJhZzsKLSAgICAgIHZhciByZXR2YWw7
Ci0gICAgICB2YXIgZmlyc3RDaGlsZDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICB2YXIg
cmVmQ2hpbGQgPSBudWxsOwotCi0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAg
ICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVm
ID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJo
Y19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAg
IGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBh
dHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRlck5vZGUgPSBkb2MuY3Jl
YXRlVGV4dE5vZGUoInRlciIpOwotICAgICAgCi0JaWYoCi0JCi0JKGJ1aWxkZXIuY29udGVudFR5
cGUgPT0gInRleHQvaHRtbCIpCi0KLQkpIHsKLQkKLQl7Ci0JCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJ
dHJ5IHsKLSAgICAgICAgICAgIGRheU5vZGUgPSBkb2MuY3JlYXRlQ0RBVEFTZWN0aW9uKCJkYXki
KTsKLSAgICAgICAgfQotCQljYXRjaChleCkgewotICAgICAgc3VjY2VzcyA9ICh0eXBlb2YoZXgu
Y29kZSkgIT0gJ3VuZGVmaW5lZCcgJiYgZXguY29kZSA9PSA5KTsKLQkJfQotCQlhc3NlcnRUcnVl
KCJ0aHJvd19OT1RfU1VQUE9SVEVEX0VSUiIsc3VjY2Vzcyk7Ci0JfQotCi0JfQotCQotCQllbHNl
IHsKLQkJCWRheU5vZGUgPSBkb2MuY3JlYXRlQ0RBVEFTZWN0aW9uKCJkYXkiKTsKLSAgICAgIGRv
Y0ZyYWcgPSBkb2MuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgcmV0dmFsID0gZG9j
RnJhZy5hcHBlbmRDaGlsZCh0ZXJOb2RlKTsKLSAgICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5k
Q2hpbGQoZGF5Tm9kZSk7Ci0gICAgICAKLQl7Ci0JCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJdHJ5IHsK
LSAgICAgICAgICAgIHJldHZhbCA9IHRpdGxlQXR0ci5pbnNlcnRCZWZvcmUoZG9jRnJhZyxyZWZD
aGlsZCk7Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9m
KGV4LmNvZGUpICE9ICd1bmRlZmluZWQnICYmIGV4LmNvZGUgPT0gMyk7Ci0JCX0KLQkJYXNzZXJ0
VHJ1ZSgidGhyb3dfSElFUkFSQ0hZX1JFUVVFU1RfRVJSIixzdWNjZXNzKTsKLQl9Ci0KLQkJfQot
CQotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmluc2VydGJlZm9y
ZTcoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJsYXN0Y2hpbGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmxhc3RjaGlsZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE0NDcyYmEyMzQ1Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNoaWxkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVz
dC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNoaWxkCi1TdGF0dXM6CVN1Y2Nlc3MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0Y2hp
bGQuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0Y2hp
bGQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM2MmE3YWU0ZjQuLjAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0
Y2hpbGQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
IFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93d3cudzMu
b3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAx
Li0tPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0PjxzY3Jp
cHQgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRybGFz
dGNoaWxkLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rp
b24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBv
bmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ry
b25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAg
ICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRo
YSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVt
YmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBh
IHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5
PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNy
b255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1
NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+
Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+
Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNy
b255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9j
b25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3Vw
Pjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
IiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fj
cm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0
IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxz
dXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
Ij4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4K
LTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEv
Y29yZS9oY19hdHRybGFzdGNoaWxkLmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmxhc3RjaGlsZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRm
NzM0MjljZGUuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJsYXN0Y2hpbGQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAot
Ci0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0s
IAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2Vh
cmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVu
aXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNv
cnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0g
ICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAg
QHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdl
dFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1T
dWl0ZS9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNoaWxkIjsKLSAgIH0KLQotdmFyIGRvY3NMb2Fk
ZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5j
dGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBy
dW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3Vy
YXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGlu
ZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRv
IGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFp
c2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0
VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAg
ICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93
IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxk
ZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYg
PSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAg
ICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHBy
ZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChk
b2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUn
OwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25F
cnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7
Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBj
b21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBz
ZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1l
bnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hp
Y2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgot
ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewot
ICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioK
LSogCi1DaGVja3MgdGhhdCBOb2RlLmxhc3RDaGlsZCBmb3IgYW4gYXR0cmlidXRlIG5vZGUgY29u
dGFpbnMKLXRoZSBleHBlY3RlZCB0ZXh0IG5vZGUuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAot
KiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAx
L2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RS
LzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYxQUQwOUZC
Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmxhc3RjaGlsZCgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAg
IGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJsYXN0Y2hpbGQiKSAhPSBu
dWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAg
IHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0
cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciBvdGhl
ckNoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBl
b2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9j
OwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsK
LSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7
Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVz
ID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5n
ZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXh0Tm9kZSA9IHRpdGxlQXR0ci5maXJzdENo
aWxkOwotCi0gICAgICBhc3NlcnROb3ROdWxsKCJ0ZXh0Tm9kZU5vdE51bGwiLHRleHROb2RlKTsK
LXZhbHVlID0gdGV4dE5vZGUubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImNoaWxk
MUlzWWVzIiwiWWVzIix2YWx1ZSk7Ci0gICAgICAgb3RoZXJDaGlsZCA9IHRleHROb2RlLm5leHRT
aWJsaW5nOwotCi0gICAgICBhc3NlcnROdWxsKCJuZXh0U2libGluZ0lzTnVsbCIsb3RoZXJDaGls
ZCk7Ci0gICAgb3RoZXJDaGlsZCA9IHRleHROb2RlLnByZXZpb3VzU2libGluZzsKLQotICAgICAg
YXNzZXJ0TnVsbCgicHJldmlvdXNTaWJsaW5nSXNOdWxsIixvdGhlckNoaWxkKTsKLSAgICAKLX0K
LQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJsYXN0Y2hpbGQoKTsKLX0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3Jt
YWxpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cm5vcm1hbGl6ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGI4NTI0MDllMDNjLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRybm9ybWFsaXplLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9s
ZXZlbDEvY29yZS9oY19hdHRybm9ybWFsaXplCi1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3JtYWxpemUuaHRtbCBi
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3JtYWxpemUuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U0MWE2MjgxZDUuLjAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3JtYWxpemUuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAi
LS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0
bWw0L3N0cmljdC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0
bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0PjxzY3JpcHQgY2hhcnNl
dD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRybm9ybWFsaXplLmpz
Ij48L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENv
bXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9Imxv
YWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdh
cmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAg
Ci0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xk
c1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFt
cDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5j
ZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgot
ICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRs
ZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9u
eW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBK
b25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+
MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8
L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0
cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwv
c3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0i
WSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9z
dHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAw
PC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5v
cmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRybm9ybWFsaXplLmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cm5vcm1hbGl6ZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDlmNWUyOTYyYjYu
LjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJub3JtYWxpemUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vKgotQ29w
eXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3Nh
Y2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNv
cnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkp
LiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhl
IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVn
YWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAg
ICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1
cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsK
LSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZl
bDEvY29yZS9oY19hdHRybm9ybWFsaXplIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAw
MDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBj
YWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRo
ZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhj
ZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFy
dGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRl
IGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4g
ZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkg
ewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAg
ICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlv
bgotICAgICAvLwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQot
ICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwot
ICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9j
UmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9j
UmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVk
ID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAg
IH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWls
ZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQot
fQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9u
IG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3Rz
LgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNv
bXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dz
IHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24g
bG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBz
ZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BcHBl
bmRzIGEgdGV4dCBub2RlIHRvIGFuIGF0dHJpYnV0ZSwgbm9ybWFsaXplcyB0aGUgYXR0cmlidXRl
Ci1hbmQgY2hlY2tzIGZvciBhIHNpbmdsZSBjaGlsZCBub2RlLgotCi0qIEBhdXRob3IgQ3VydCBB
cm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0x
OTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0x
NjJDRjA4MwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJub3JtYWxpemUoKSB7Ci0gICB2YXIgc3VjY2Vz
czsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRybm9ybWFsaXpl
IikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7
Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0
aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2
YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIgc2Vjb25kQ2hpbGQ7
Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlz
LmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAg
ICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAg
YWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAg
IHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0
Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVk
SXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJk
YXkiKTsKLSAgICAgIHJldHZhbCA9IHRpdGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0g
ICAgICB0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgiIik7Ci0gICAgICByZXR2YWwgPSB0
aXRsZUF0dHIuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOwotICAgICAgdGVzdE5vZGUubm9ybWFsaXpl
KCk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVx
dWFscygiYXR0ck5vZGVWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUpOwotICAgICAgIGZpcnN0Q2hp
bGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5v
ZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJzdENoaWxkVmFsdWUiLCJZZXN0ZXJk
YXkiLHZhbHVlKTsKLSAgICAgICBzZWNvbmRDaGlsZCA9IGZpcnN0Q2hpbGQubmV4dFNpYmxpbmc7
Ci0KLSAgICAgIGFzc2VydE51bGwoInNlY29uZENoaWxkSXNOdWxsIixzZWNvbmRDaGlsZCk7Ci0g
ICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRybm9ybWFsaXpl
KCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRycmVtb3ZlY2hpbGQxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJyZW1vdmVjaGlsZDEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlYjE1ZTIxZDg1NC4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMS1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEv
RE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMQotU3RhdHVzOglT
dWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRycmVtb3ZlY2hpbGQxLmh0bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRycmVtb3ZlY2hpbGQxLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdl
YzIyZmY1NDJjLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEv
Y29yZS9oY19hdHRycmVtb3ZlY2hpbGQxLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCww
IEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAot
ICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMg
aXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNf
c3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1s
LmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iaGNfYXR0cnJlbW92ZWNoaWxkMS5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0
ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08
L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxl
bT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNv
ZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8
dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4g
RGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAy
PC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdp
dGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNl
bnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJv
bmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZh
cj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7
IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVN
UDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVw
YXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVs
dGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IEly
dmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwv
ZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBE
aXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4K
LSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBE
YWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8
L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBT
cGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4K
LSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5
ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMS5qcyBiL0xheW91
dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZW1vdmVjaGlsZDEuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmOTg3NDZhNjlmLi4wMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVtb3ZlY2hpbGQxLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEt
MjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0
ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9y
bWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJl
c2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdh
cmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
Ci0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0
LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhh
dCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2Yg
dGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0
dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnJl
bW92ZWNoaWxkMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVp
bGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0
ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4K
LS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5j
aHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lz
ZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2Vw
dGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBi
b2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFn
ZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRl
cyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAg
ICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2Fk
ZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBl
b2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9j
OwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJo
Y19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAg
ICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRj
aChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAg
ICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0v
LyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAg
ZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdo
ZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAg
ICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAg
Ym9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgp
IHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVz
ID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotUmVtb3ZlcyB0aGUgY2hpbGQg
bm9kZSBvZiBhbiBhdHRyaWJ1dGUgYW5kIGNoZWNrcyB0aGF0IHRoZSB2YWx1ZSBpcyBlbXB0eS4K
LQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5
OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0q
IEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEv
bGV2ZWwtb25lLWNvcmUjSUQtMTczNDgzNDA2NgotKi8KLWZ1bmN0aW9uIGhjX2F0dHJyZW1vdmVj
aGlsZDEoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1
aWxkZXIsICJoY19hdHRycmVtb3ZlY2hpbGQxIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBk
b2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2
YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0g
ICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0Q2hp
bGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0
aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0g
ICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAg
ICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAg
ICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0
ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5h
bWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7
Ci0KLSAgICAgIGFzc2VydE5vdE51bGwoImF0dHJDaGlsZE5vdE51bGwiLHRleHROb2RlKTsKLXJl
dHZhbCA9IHRpdGxlQXR0ci5yZW1vdmVDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICB2YWx1ZSA9IHRp
dGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCIiLHZhbHVl
KTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVx
dWFscygiYXR0ck5vZGVWYWx1ZSIsIiIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5v
ZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJyZXR2YWxWYWx1ZSIsIlllcyIsdmFsdWUp
OwotICAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgYXNz
ZXJ0TnVsbCgiZmlyc3RDaGlsZE51bGwiLGZpcnN0Q2hpbGQpOwotICAgIAotfQotCi0KLQotCi1m
dW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cnJlbW92ZWNoaWxkMSgpOwotfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGls
ZDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cnJlcGxhY2VjaGlsZDEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjNzZkMGE1OTNjYi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMiArMCwwIEBACi1UZXN0OglodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1
aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQxCi1TdGF0dXM6CVN1Y2Nlc3MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNl
Y2hpbGQxLmh0bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVw
bGFjZWNoaWxkMS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTUyYzZkODg0
My4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cnJlcGxhY2VjaGlsZDEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0
dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21t
ZW50IG51bWJlciAxLi0tPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwv
dGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwv
c2NyaXB0PjxzY3JpcHQgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJoY19hdHRycmVwbGFjZWNoaWxkMS5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2ph
dmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3Njcmlw
dD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAw
MDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNj
b3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZl
bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFz
LCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4K
LSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50
aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RB
VEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0g
IDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1h
bGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxh
cywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8
L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVu
dCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92
YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywg
dGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0g
IDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3Rv
cjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFj
cm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMs
IFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgot
ICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFs
aXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFj
cm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwv
YWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEuanMgYi9MYXlvdXRUZXN0
cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMS5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmY0OTllNWQzMGUuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQxLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAw
NCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBv
ZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0
aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2Vy
dmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUg
TGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0K
LVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNv
ZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBp
ZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVz
dAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6
Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxh
Y2VjaGlsZDEiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxk
ZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVz
dGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0v
LwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hy
b25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2Us
IHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRp
b24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9k
eSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VT
dGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMg
dGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAg
IGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVk
ID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9m
KHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsK
LSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNf
c3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAg
ICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2go
ZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAg
ICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8g
ICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVh
Y2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVu
IGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAg
ICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJv
ZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7
Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9
ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLVJlcGxhY2VzIGEgdGV4dCBub2Rl
IG9mIGFuIGF0dHJpYnV0ZSBhbmQgY2hlY2tzIGlmIHRoZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0
ZSBpcyBjaGFuZ2VkLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJ
RC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2
ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC03ODU4ODczMDcKLSovCi1mdW5jdGlvbiBo
Y19hdHRycmVwbGFjZWNoaWxkMSgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5p
dGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJyZXBsYWNlY2hpbGQxIikgIT0gbnVsbCkgcmV0
dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVz
dE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAg
ICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAg
ICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAg
ICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVm
ID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJo
Y19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAg
IGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBh
dHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gZG9jLmNy
ZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmly
c3RDaGlsZDsKLQotICAgICAgYXNzZXJ0Tm90TnVsbCgiYXR0ckNoaWxkTm90TnVsbCIsZmlyc3RD
aGlsZCk7Ci1yZXR2YWwgPSB0aXRsZUF0dHIucmVwbGFjZUNoaWxkKHRleHROb2RlLGZpcnN0Q2hp
bGQpOwotICAgICAgdmFsdWUgPSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFs
cygiYXR0clZhbHVlIiwidGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSB0aXRsZUF0dHIu
bm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJ0ZXJkYXki
LHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHJldHZhbC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2Vy
dEVxdWFscygicmV0dmFsVmFsdWUiLCJZZXMiLHZhbHVlKTsKLSAgICAgICBmaXJzdENoaWxkID0g
dGl0bGVBdHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gZmlyc3RDaGlsZC5ub2RlVmFs
dWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiZmlyc3RDaGlsZFZhbHVlIiwidGVyZGF5Iix2YWx1
ZSk7Ci0gICAgICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRy
cmVwbGFjZWNoaWxkMSgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDItZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OThiZWEzMmQzMi4uMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDIt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0OglodHRwOi8v
d3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNl
Y2hpbGQyCi1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQyLmh0bWwgYi9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMi5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxYjI3MmVjN2ZlZS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDIuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9E
VEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmlj
dC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWw+PGhlYWQ+
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0PjxzY3JpcHQgY2hhcnNldD0iVVRGLTgi
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRycmVwbGFjZWNoaWxkMi5qcyI+PC9z
Y3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0
ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29t
cGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBN
YXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8
c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0i
WWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+
Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlz
IGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50
MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8g
YSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1
cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8
L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCww
MDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNs
YXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgot
IDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+
Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4K
LSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxw
aGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4K
LSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25n
PgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3Vw
PgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMu
IFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJl
cGxhY2VjaGlsZDIuanMgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
cmVwbGFjZWNoaWxkMi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI2ZDMxNmQy
ZmEuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJyZXBsYWNlY2hpbGQyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQot
LyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAK
LShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJj
aCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2
ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0
aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAg
LyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEBy
ZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRV
UkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3Vp
dGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDIiOwotICAgfQotCi12YXIgZG9jc0xv
YWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAg
IHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmln
dXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2Fk
aW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQg
dG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICBy
YWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBz
ZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewot
ICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhy
b3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVp
bGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1Jl
ZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewot
ICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0g
cHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYg
KGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0
ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlv
bkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRl
JzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhl
IGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGlu
IHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1
bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3
aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQu
Ci1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7
Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8q
KgotKiAKLVJlcGxhY2VzIGEgdGV4dCBub2RlIG9mIGFuIGF0dHJpYnV0ZSB3aXRoIGEgZG9jdW1l
bnQgZnJhZ21lbnQgYW5kIGNoZWNrcyBpZiB0aGUgdmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMg
Y2hhbmdlZC4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3
NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEt
MTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNzg1ODg3MzA3Ci0qLwotZnVuY3Rpb24gaGNfYXR0
cnJlcGxhY2VjaGlsZDIoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxp
emF0aW9uKGJ1aWxkZXIsICJoY19hdHRycmVwbGFjZWNoaWxkMiIpICE9IG51bGwpIHJldHVybjsK
LSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2Rl
OwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFy
IHZhbHVlOwotICAgICAgdmFyIHRlck5vZGU7Ci0gICAgICB2YXIgZGF5Tm9kZTsKLSAgICAgIHZh
ciBkb2NGcmFnOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBmaXJzdENoaWxkOwotICAg
ICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2Mp
ICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQot
ICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9u
eW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0
Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUu
YXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0o
InRpdGxlIik7Ci0gICAgICB0ZXJOb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXIiKTsKLSAg
ICAgIGRheU5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoImRheSIpOwotICAgICAgZG9jRnJhZyA9
IGRvYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICByZXR2YWwgPSBkb2NGcmFnLmFw
cGVuZENoaWxkKHRlck5vZGUpOwotICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGlsZChk
YXlOb2RlKTsKLSAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAg
ICAgYXNzZXJ0Tm90TnVsbCgiYXR0ckNoaWxkTm90TnVsbCIsZmlyc3RDaGlsZCk7Ci1yZXR2YWwg
PSB0aXRsZUF0dHIucmVwbGFjZUNoaWxkKGRvY0ZyYWcsZmlyc3RDaGlsZCk7Ci0gICAgICB2YWx1
ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJ0
ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAg
ICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAg
IHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJyZXR2YWxW
YWx1ZSIsIlllcyIsdmFsdWUpOwotICAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RD
aGlsZDsKLQotICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNz
ZXJ0RXF1YWxzKCJmaXJzdENoaWxkVmFsdWUiLCJ0ZXIiLHZhbHVlKTsKLSAgICAgICAKLX0KLQot
Ci0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJyZXBsYWNlY2hpbGQyKCk7Ci19
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0
dmFsdWUxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJzZXR2YWx1ZTEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlZGZlNzRiZDFjOC4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwyICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUv
bGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMQotU3RhdHVzOglTdWNjZXNzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUxLmh0bWwg
Yi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUxLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwY2JjZWNiMWE1Li4wMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUxLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMg
Ii0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxo
dG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJz
ZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cnNldHZhbHVlMS5q
cyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRD
b21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJs
b2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJn
YXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAg
IAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4K
LSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9s
ZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZh
bXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVu
Y2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4K
LSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3Jv
bnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0g
Sm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3Vw
PjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZ
ZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9z
dHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8
L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwv
c3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAw
MDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBO
b3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cnNldHZhbHVlMS5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJzZXR2YWx1ZTEuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1N2Y3YjZkOGJh
Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyc2V0dmFsdWUxLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLQotLyoKLUNv
cHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNz
YWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25z
b3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5
KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xl
Z2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0g
ICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4g
dXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7
Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2
ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEw
MDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0
aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4
Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3Rh
cnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0
ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVu
IGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgp
IHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0g
ICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRp
b24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0K
LSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsK
LSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRv
Y1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRv
Y1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRl
ZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAg
ICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVp
bGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0K
LX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlv
biBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0
cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBj
b21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93
cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9u
IGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAg
c2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotU2V0
cyBBdHRyLnZhbHVlIG9uIGFuIGF0dHJpYnV0ZSB0aGF0IG9ubHkgaGFzIGEgc2ltcGxlIHZhbHVl
LgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8x
OTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0yMjE2NjI0NzQK
LSovCi1mdW5jdGlvbiBoY19hdHRyc2V0dmFsdWUxKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAg
aWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cnNldHZhbHVlMSIpICE9IG51
bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAg
dmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRy
OwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBmaXJzdENo
aWxkOwotICAgICAgdmFyIG90aGVyQ2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBu
dWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAg
ICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwg
ImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgz
KTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRs
ZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIGZpcnN0Q2hp
bGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgYXNzZXJ0Tm90TnVsbCgiYXR0ckNo
aWxkTm90TnVsbCIsZmlyc3RDaGlsZCk7Ci10aXRsZUF0dHIudmFsdWUgPSAiVG9tb3Jyb3ciOwot
Ci0gICAgICBmaXJzdENoaWxkLm5vZGVWYWx1ZSA9ICJpbXBsIHJldXNlZCBub2RlIjsKLQotICAg
ICAgdmFsdWUgPSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0clZh
bHVlIiwiVG9tb3Jyb3ciLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFs
dWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlRvbW9ycm93Iix2YWx1
ZSk7Ci0gICAgICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5sYXN0Q2hpbGQ7Ci0KLSAgICAgIHZh
bHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiZmlyc3RD
aGlsZFZhbHVlIiwiVG9tb3Jyb3ciLHZhbHVlKTsKLSAgICAgICBvdGhlckNoaWxkID0gZmlyc3RD
aGlsZC5uZXh0U2libGluZzsKLQotICAgICAgYXNzZXJ0TnVsbCgibmV4dFNpYmxpbmdJc051bGwi
LG90aGVyQ2hpbGQpOwotICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAg
aGNfYXR0cnNldHZhbHVlMSgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9k
b20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUyLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ3NDNkYTlhMWEuLjAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTItZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0OglodHRwOi8vd3d3LnczLm9y
Zy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTIKLVN0YXR1
czoJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cnNldHZhbHVlMi5odG1sIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cnNldHZhbHVlMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTE1
MGNhNWYzOS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cnNldHZhbHVlMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAot
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAKLSAgICAi
aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBUaGlzIGlzIGNv
bW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxlPmhjX3N0YWZm
PC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmaHRtbC5qcyI+
PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9ImhjX2F0dHJzZXR2YWx1ZTIuanMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZh
c2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+
PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1QMDAw
MTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFjY291
bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5GZW1h
bGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxhcywg
VGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0g
IDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVudGl0
eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENEQVRB
U2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgotICA8
Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxl
PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxsYXMs
ICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAzPC9l
bT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQg
TWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcsIHRl
eGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8
c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8
L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3Jv
bnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFzLCBU
ZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4KLSAg
PHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lhbGlz
dDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxhY3Jv
bnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8L2Fj
cm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rv
bS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTIuanMgYi9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMjlkN2Q1YjFjOS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMi5qcworKysgL2Rldi9udWxsCkBAIC0x
LDEzOCArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBX
ZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwg
RXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVt
YXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3Jr
IGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGlu
IHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3
dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIz
MQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUg
dGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVu
Y3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8y
MDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTIiOwotICAgfQot
Ci12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwot
Ly8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVm
b3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBh
cmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBk
b2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAg
ICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkK
LS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8v
Ci1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7
Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWls
ZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVD
b25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAg
ICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5k
ZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRv
Y3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAg
Ci0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1
cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJ
bml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVz
ID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBj
YWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9h
ZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3Vz
IGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMg
aXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8g
YmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xv
YWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAg
fQotfQotCi0KLS8qKgotKiAKLVNldHMgQXR0ci52YWx1ZSBvbiBhbiBhdHRyaWJ1dGUgdGhhdCBz
aG91bGQgY29udGFpbiBtdWx0aXBsZSBjaGlsZCBub2Rlcy4KLQotKiBAYXV0aG9yIEN1cnQgQXJu
b2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5
ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMjIxNjYyNDc0Ci0qLwotZnVuY3Rpb24gaGNfYXR0cnNl
dHZhbHVlMigpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24o
YnVpbGRlciwgImhjX2F0dHJzZXR2YWx1ZTIiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRv
YzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZh
ciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAg
ICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgZmlyc3RDaGls
ZDsKLSAgICAgIHZhciBvdGhlckNoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVs
bDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAg
IGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJk
b2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7
Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVB
dHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXh0Tm9kZSA9
IGRvYy5jcmVhdGVUZXh0Tm9kZSgidGVyZGF5Iik7Ci0gICAgICByZXR2YWwgPSB0aXRsZUF0dHIu
YXBwZW5kQ2hpbGQodGV4dE5vZGUpOwotICAgICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5maXJz
dENoaWxkOwotCi0gICAgICBhc3NlcnROb3ROdWxsKCJhdHRyQ2hpbGROb3ROdWxsIixmaXJzdENo
aWxkKTsKLXRpdGxlQXR0ci52YWx1ZSA9ICJUb21vcnJvdyI7Ci0KLSAgICAgIGZpcnN0Q2hpbGQu
bm9kZVZhbHVlID0gImltcGwgcmV1c2VkIG5vZGUiOwotCi0gICAgICB2YWx1ZSA9IHRpdGxlQXR0
ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJUb21vcnJvdyIsdmFs
dWUpOwotICAgICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0
RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwiVG9tb3Jyb3ciLHZhbHVlKTsKLSAgICAgICBmaXJzdENo
aWxkID0gdGl0bGVBdHRyLmxhc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5v
ZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJzdENoaWxkVmFsdWUiLCJUb21vcnJv
dyIsdmFsdWUpOwotICAgICAgIG90aGVyQ2hpbGQgPSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOwot
Ci0gICAgICBhc3NlcnROdWxsKCJuZXh0U2libGluZ0lzTnVsbCIsb3RoZXJDaGlsZCk7Ci0gICAg
Ci19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyc2V0dmFsdWUyKCk7
Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19lbGVt
ZW50bm9ybWFsaXplMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEv
Y29yZS9oY19lbGVtZW50bm9ybWFsaXplMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDhjNDY4MzkxNGM4Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9k
b20vaHRtbC9sZXZlbDEvY29yZS9oY19lbGVtZW50bm9ybWFsaXplMi1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEv
RE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6ZTIKLVN0YXR1czoJ
U3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNf
ZWxlbWVudG5vcm1hbGl6ZTIuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3Jl
L2hjX2VsZW1lbnRub3JtYWxpemUyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGMwYmE2ZTdmMDYxLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19lbGVtZW50bm9ybWFsaXplMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDgg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VO
IiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBU
aGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxl
PmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxm
aHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9ImhjX2VsZW1lbnRub3JtYWxpemUyLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5
cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3Qo
KTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4K
LSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgot
ICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+
Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGgg
QXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVN
UDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rp
b24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBh
ZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8
L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgot
ICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4m
YmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8
ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29k
ZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFy
PiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3gg
MjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAw
MDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29u
bmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJv
YWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1Q
MDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1
dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRl
eGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19lbGVtZW50bm9ybWFsaXplMi5qcyBi
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRub3JtYWxpemUyLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjE5N2VkNWExZC4uMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6
ZTIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOC
wqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMg
SW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1m
b3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1S
aWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LC
riBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQg
d2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9j
b3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRz
IFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRp
ZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJl
dHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9o
Y19lbGVtZW50bm9ybWFsaXplMiI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7
Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
IGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVz
dCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlv
bnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4g
IE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQg
dGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVy
aW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAg
IHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8v
ICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAg
ICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAg
IGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAg
IGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9
IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwg
ImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAx
KSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0g
ICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwg
ZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQot
Ci0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAK
LS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8v
Ci0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0
ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUK
LS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRD
b21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQ
YWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQWRkIGFuIGVt
cHR5IHRleHQgbm9kZSB0byBhbiBleGlzdGluZyBhdHRyaWJ1dGUgbm9kZSwgbm9ybWFsaXplIHRo
ZSBjb250YWluaW5nIGVsZW1lbnQKLWFuZCBjaGVjayB0aGF0IHRoZSBhdHRyaWJ1dGUgbm9kZSBo
YXMgZWxpbWluYXRlZCB0aGUgZW1wdHkgdGV4dC4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0q
IEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEv
bGV2ZWwtb25lLWNvcmUjSUQtMTYyQ0YwODMKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9CdWdz
L1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9NDgyCi0qLwotZnVuY3Rpb24gaGNfZWxlbWVudG5vcm1h
bGl6ZTIoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1
aWxkZXIsICJoY19lbGVtZW50bm9ybWFsaXplMiIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIg
ZG9jOwotICAgICAgdmFyIHJvb3Q7Ci0gICAgICB2YXIgZWxlbWVudExpc3Q7Ci0gICAgICB2YXIg
ZWxlbWVudDsKLSAgICAgIHZhciBmaXJzdENoaWxkOwotICAgICAgdmFyIHNlY29uZENoaWxkOwot
ICAgICAgdmFyIGNoaWxkVmFsdWU7Ci0gICAgICB2YXIgZW1wdHlUZXh0OwotICAgICAgdmFyIGF0
dHJOb2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51
bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAg
ICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAi
ZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICByb290ID0gZG9jLmRvY3VtZW50RWxlbWVudDsKLQot
ICAgICAgZW1wdHlUZXh0ID0gZG9jLmNyZWF0ZVRleHROb2RlKCIiKTsKLSAgICAgIGVsZW1lbnRM
aXN0ID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgZWxlbWVu
dCA9IGVsZW1lbnRMaXN0Lml0ZW0oMCk7Ci0gICAgICBhdHRyTm9kZSA9IGVsZW1lbnQuZ2V0QXR0
cmlidXRlTm9kZSgidGl0bGUiKTsKLSAgICAgIHJldHZhbCA9IGF0dHJOb2RlLmFwcGVuZENoaWxk
KGVtcHR5VGV4dCk7Ci0gICAgICBlbGVtZW50Lm5vcm1hbGl6ZSgpOwotICAgICAgYXR0ck5vZGUg
PSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoInRpdGxlIik7Ci0gICAgICBmaXJzdENoaWxkID0g
YXR0ck5vZGUuZmlyc3RDaGlsZDsKLQotICAgICAgY2hpbGRWYWx1ZSA9IGZpcnN0Q2hpbGQubm9k
ZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImZpcnN0Q2hpbGQiLCJZZXMiLGNoaWxkVmFs
dWUpOwotICAgICAgIHNlY29uZENoaWxkID0gZmlyc3RDaGlsZC5uZXh0U2libGluZzsKLQotICAg
ICAgYXNzZXJ0TnVsbCgic2Vjb25kQ2hpbGROdWxsIixzZWNvbmRDaGlsZCk7Ci0gICAgCi19Ci0K
LQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19lbGVtZW50bm9ybWFsaXplMigpOwot
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJh
cHBlbmRjaGlsZDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJhcHBlbmRjaGlsZDEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwNTgzYjVlN2FlMi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9t
L3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDEtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9N
LVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMQotU3RhdHVzCVN1Y2Nl
c3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
YXBwZW5kY2hpbGQxLmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJhcHBlbmRjaGlsZDEuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYjBhZDkz
NzM3Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmFwcGVuZGNoaWxkMS5qcworKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0K
LS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwg
Ci0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFy
Y2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5p
dmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29y
dGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAg
IC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBA
cmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0
VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1
aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDEiOwotICAgfQotCi12YXIgZG9jc0xv
YWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAg
IHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmln
dXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2Fk
aW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQg
dG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICBy
YWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBz
ZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewot
ICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhy
b3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVp
bGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1Jl
ZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewot
ICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0g
cHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYg
KGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0
ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlv
bkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRl
JzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhl
IGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGlu
IHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1
bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3
aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQu
Ci1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7
Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8q
KgotKiAKLUFwcGVuZHMgYSB0ZXh0IG5vZGUgdG8gYW4gYXR0cmlidXRlIGFuZCBjaGVja3MgaWYg
dGhlIHZhbHVlIG9mCi10aGUgYXR0cmlidXRlIGlzIGNoYW5nZWQuCi0KLSogQGF1dGhvciBDdXJ0
IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0x
LTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cu
dzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lE
LTE4NEU3MTA3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmFwcGVuZGNoaWxkMSgpIHsKLSAgIHZhciBz
dWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJhcHBl
bmRjaGlsZDEiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3Jv
bnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAg
ICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIHZhciB0ZXh0Tm9kZTsK
LSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgbGFzdENoaWxkOwotICAgICAgCi0gICAgICB2
YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmlu
ZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0g
bG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9j
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9u
eW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsK
LQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0g
ICAgICB0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgidGVyZGF5Iik7Ci0gICAgICByZXR2
YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOwotICAgICAgdmFsdWUgPSB0aXRs
ZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0clZhbHVlIiwiWWVzdGVyZGF5
Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSB0aXRsZUF0dHIubm9kZVZhbHVlOwotCi0gICAgICBh
c3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2
YWx1ZSA9IHJldHZhbC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygicmV0dmFsVmFs
dWUiLCJ0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICBsYXN0Q2hpbGQgPSB0aXRsZUF0dHIubGFzdENo
aWxkOwotCi0gICAgICB2YWx1ZSA9IGxhc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2Vy
dEVxdWFscygibGFzdENoaWxkVmFsdWUiLCJ0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICAKLX0KLQot
Ci0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJhcHBlbmRjaGlsZDEoKTsKLX0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBw
ZW5kY2hpbGQxLnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJhcHBlbmRjaGlsZDEueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyOWI5
MjgwMTJhLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmFwcGVuZGNoaWxkMS54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAg
QEAKLTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/PgotPCFET0NUWVBF
IGh0bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCi0gICAi
eGh0bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsiPgotICAgPCFF
TlRJVFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0NzsiPgotICAgPCFF
TlRJVFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0OTsiPgotICAg
PCFFTlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQVUJMSUMg
Im5vdGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVNICJub3RhdGlv
bjJGaWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRyIj4KLV0+Ci08IS0t
IFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+PHNjcmlw
dCAgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyYXBw
ZW5kY2hpbGQxLmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxv
YWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2Fk
PSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5N
YXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAg
ICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255
bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255
bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5
bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAy
ICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZl
cmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29k
ZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2Vy
Ci0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8
c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxl
PSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+
Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9y
PC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSww
MDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xh
c3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3Jvbnlt
PgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVy
czwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkw
LDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgy
MSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2Jv
ZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJhcHBlbmRjaGlsZDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkYzQ2NTcwMjA1NS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDItZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3Jn
LzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMgotU3Rh
dHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRyYXBwZW5kY2hpbGQyLmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJhcHBlbmRjaGlsZDIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGFjNTM4OTZkMGE3Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMi5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyNyAr
MCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29u
c29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3Bl
YW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3Ms
IEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAK
LWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5v
cmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8K
LQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4K
LSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24g
Z2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RP
TS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDIiOwotICAgfQotCi12
YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8g
ICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3Jl
Ci0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUg
bm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1
bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAg
ICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8v
ICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1m
dW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0g
ICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVy
LCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25m
aWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAg
dmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZp
bmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NM
b2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0g
ICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9
ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0
aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0g
J2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxs
ZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBz
dGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxv
YWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMg
Y2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUg
ZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRl
ZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQot
fQotCi0KLS8qKgotKiAKLUF0dGVtcHRzIHRvIGFwcGVuZCBhbiBlbGVtZW50IHRvIHRoZSBjaGls
ZCBub2RlcyBvZiBhbiBhdHRyaWJ1dGUuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2Vl
IGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVs
LW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgv
UkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTE4NEU3MTA3Ci0qLwot
ZnVuY3Rpb24gaGNfYXR0cmFwcGVuZGNoaWxkMigpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlm
KGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJhcHBlbmRjaGlsZDIiKSAhPSBu
dWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAg
IHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0
cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIHZhciBuZXdDaGlsZDsKLSAgICAgIHZhciByZXR2
YWw7Ci0gICAgICB2YXIgbGFzdENoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVs
bDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAg
IGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJk
b2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7
Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVB
dHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICBuZXdDaGlsZCA9
IGRvYy5jcmVhdGVFbGVtZW50KCJ0ZXJkYXkiKTsKLSAgICAgIAotCXsKLQkJc3VjY2VzcyA9IGZh
bHNlOwotCQl0cnkgewotICAgICAgICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmFwcGVuZENoaWxk
KG5ld0NoaWxkKTsKLSAgICAgICAgfQotCQljYXRjaChleCkgewotICAgICAgc3VjY2VzcyA9ICh0
eXBlb2YoZXguY29kZSkgIT0gJ3VuZGVmaW5lZCcgJiYgZXguY29kZSA9PSAzKTsKLQkJfQotCQlh
c3NlcnRUcnVlKCJ0aHJvd19ISUVSQVJDSFlfUkVRVUVTVF9FUlIiLHN1Y2Nlc3MpOwotCX0KLQot
fQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmFwcGVuZGNoaWxkMigp
OwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJhcHBlbmRjaGlsZDIueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmFwcGVuZGNoaWxkMi54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTBiMTdlN2I0YzcuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQyLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAg
KzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURP
Q1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIK
LSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0g
ICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0g
ICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+
Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBV
QkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5v
dGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4K
LTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90
aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48
c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0
dHJhcHBlbmRjaGlsZDIuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rp
b24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBv
bmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ry
b25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAg
ICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRo
YSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVt
YmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBh
IHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5
PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNy
b255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1
NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+
Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+
Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNy
b255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9j
b25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3Vw
Pjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
IiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fj
cm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0
IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxz
dXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
Ij4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4K
LTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20v
eGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMmE2NWFjNjUwLi4wMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMy1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3QJaHR0cDovL3d3dy53
My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQz
Ci1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDMuanMgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjZhZGMzZGI1YzMuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQzLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MTM4ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdl
YiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBF
dXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1h
dGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsg
aXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4g
dGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3
LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMx
Ci0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0
ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5j
dGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIw
MDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMyI7Ci0gICB9
Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8v
Ci0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBi
ZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJl
IGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAg
IGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8g
ICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVs
eQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0Lgot
Ly8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5n
JzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1
aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0
ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0g
ICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1
bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAg
ZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAg
ICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRj
aEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0
dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlz
IGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBs
b2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25v
dXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1
cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0
byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2Nz
TG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAg
ICB9Ci19Ci0KLQotLyoqCi0qIAotQXBwZW5kcyBhIGRvY3VtZW50IGZyYWdtZW50IHRvIGFuIGF0
dHJpYnV0ZSBhbmQgY2hlY2tzIGlmIHRoZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0ZSBpcyBjaGFu
Z2VkLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9U
Ui8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYw
MjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4
MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0xODRFNzEwNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJhcHBl
bmRjaGlsZDMoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9u
KGJ1aWxkZXIsICJoY19hdHRyYXBwZW5kY2hpbGQzIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZh
ciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAg
ICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7
Ci0gICAgICB2YXIgdGVyTm9kZTsKLSAgICAgIHZhciBkYXlOb2RlOwotICAgICAgdmFyIHJldHZh
bDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICB2YXIgZG9jRnJhZzsKLSAgICAgIAotICAg
ICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5k
ZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRv
YyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlzdCA9
IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUgPSBh
Y3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0
ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIp
OwotICAgICAgdGVyTm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgidGVyIik7Ci0gICAgICBkYXlO
b2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJkYXkiKTsKLSAgICAgIGRvY0ZyYWcgPSBkb2MuY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGls
ZCh0ZXJOb2RlKTsKLSAgICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5kQ2hpbGQoZGF5Tm9kZSk7
Ci0gICAgICByZXR2YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hpbGQoZG9jRnJhZyk7Ci0gICAgICB2
YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUi
LCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7
Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUp
OwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0TnVsbCgi
cmV0dmFsVmFsdWUiLHZhbHVlKTsKLSAgICBsYXN0Q2hpbGQgPSB0aXRsZUF0dHIubGFzdENoaWxk
OwotCi0gICAgICB2YWx1ZSA9IGxhc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVx
dWFscygibGFzdENoaWxkVmFsdWUiLCJkYXkiLHZhbHVlKTsKLSAgICAgICAKLX0KLQotCi0KLQot
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJhcHBlbmRjaGlsZDMoKTsKLX0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hp
bGQzLnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBl
bmRjaGlsZDMueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MDEzOThmN2Nl
Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cmFwcGVuZGNoaWxkMy54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLTw/
eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/PgotPCFET0NUWVBFIGh0bWwK
LSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCi0gICAieGh0bWwx
LXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsiPgotICAgPCFFTlRJVFkg
YmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0NzsiPgotICAgPCFFTlRJVFkg
ZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0OTsiPgotICAgPCFFTlRJ
VFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQVUJMSUMgIm5vdGF0
aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVNICJub3RhdGlvbjJGaWxl
Ij4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRyIj4KLV0+Ci08IS0tIFRoaXMg
aXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+PHNjcmlwdCAgY2hh
cnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyYXBwZW5kY2hp
bGQzLmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21w
bGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2Fk
Q29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJl
dCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAot
ICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRs
ZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8
L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNU
aGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7
ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2Ug
dG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAg
PHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9
IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3Jvbnlt
PgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9u
ZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEw
MCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMi
IGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9w
PgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJv
bmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1
cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ilkm
YWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwv
cD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ry
b25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwv
c3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3Jk
aWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJhcHBlbmRjaGlsZDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwNGJhMzBjMGFhOS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDQtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEv
RE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNAotU3RhdHVzCVN1
Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyYXBwZW5kY2hpbGQ0LmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJhcHBlbmRjaGlsZDQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNzAx
MDJlNDdmLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmFwcGVuZGNoaWxkNC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBA
Ci0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1
bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVz
ZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8g
VW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29u
c29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0K
LSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAq
ICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFy
Z2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0
LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDQiOwotICAgfQotCi12YXIgZG9j
c0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlz
IGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAg
ICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29u
ZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBs
b2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBz
ZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAg
ICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlv
biBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkg
ewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkg
dGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVk
QnVpbGRlcigpOwotICAgICAgIGNoZWNrRmVhdHVyZSgiWE1MIiwgbnVsbCk7Ci0KLSAgICAgIGRv
Y3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlm
ICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRo
aXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRv
YyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7
Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAg
fSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgp
OwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0K
LS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8v
ICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0v
LyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQs
Ci0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8v
ICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21w
bGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdl
U3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQXR0ZW1wdCB0byBh
cHBlbmQgYSBDREFUQVNlY3Rpb24gdG8gYW4gYXR0cmlidXRlIHdoaWNoIHNob3VsZCByZXN1bHQK
LWluIGEgSElFUkFSQ0hZX1JFUVVFU1RfRVJSLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9s
ZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8x
OTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0xODRFNzEwNwot
Ki8KLWZ1bmN0aW9uIGhjX2F0dHJhcHBlbmRjaGlsZDQoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAg
ICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRyYXBwZW5kY2hpbGQ0Iikg
IT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0g
ICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRs
ZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIg
cmV0dmFsOwotICAgICAgdmFyIGxhc3RDaGlsZDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9
IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAg
ICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVm
LCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVt
KDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRp
dGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgCi0JaWYo
Ci0JCi0JKGJ1aWxkZXIuY29udGVudFR5cGUgPT0gInRleHQvaHRtbCIpCi0KLQkpIHsKLQkKLQl7
Ci0JCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJdHJ5IHsKLSAgICAgICAgICAgIHRleHROb2RlID0gZG9j
LmNyZWF0ZUNEQVRBU2VjdGlvbigidGVyZGF5Iik7Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgpIHsK
LSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9mKGV4LmNvZGUpICE9ICd1bmRlZmluZWQnICYmIGV4LmNv
ZGUgPT0gOSk7Ci0JCX0KLQkJYXNzZXJ0VHJ1ZSgidGhyb3dfTk9UX1NVUFBPUlRFRF9FUlIiLHN1
Y2Nlc3MpOwotCX0KLQotCX0KLQkKLQkJZWxzZSB7Ci0JCQl0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVD
REFUQVNlY3Rpb24oInRlcmRheSIpOwotICAgICAgCi0JewotCQlzdWNjZXNzID0gZmFsc2U7Ci0J
CXRyeSB7Ci0gICAgICAgICAgICByZXR2YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hpbGQodGV4dE5v
ZGUpOwotICAgICAgICB9Ci0JCWNhdGNoKGV4KSB7Ci0gICAgICBzdWNjZXNzID0gKHR5cGVvZihl
eC5jb2RlKSAhPSAndW5kZWZpbmVkJyAmJiBleC5jb2RlID09IDMpOwotCQl9Ci0JCWFzc2VydFRy
dWUoInRocm93X0hJRVJBUkNIWV9SRVFVRVNUX0VSUiIsc3VjY2Vzcyk7Ci0JfQotCi0JCX0KLQkK
LX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJhcHBlbmRjaGlsZDQo
KTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyYXBwZW5kY2hpbGQ0LnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJhcHBlbmRjaGlsZDQueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU4NjU5YTRmOTRiLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNC54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYw
ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/PgotPCFE
T0NUWVBFIGh0bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4i
Ci0gICAieGh0bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsiPgot
ICAgPCFFTlRJVFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0NzsiPgot
ICAgPCFFTlRJVFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0OTsi
PgotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQ
VUJMSUMgIm5vdGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVNICJu
b3RhdGlvbjJGaWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRyIj4KLV0+
Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwv
dGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+
PHNjcmlwdCAgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19h
dHRyYXBwZW5kY2hpbGQ0LmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0
aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkg
b25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0
cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4g
ICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8
YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwv
YWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0
aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51
bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGgg
YSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFy
eTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFj
cm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4
NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25n
PlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2Rl
PgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3Jvbnlt
IHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fj
cm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBP
Y29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1
cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVy
dCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8
c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+
Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9t
L3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGYyYTY0MDU0OC4uMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cu
dzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxk
NQotU3RhdHVzCWZhaWx1cmUKLU1lc3NhZ2UJdGhyb3dfV1JPTkdfRE9DVU1FTlRfRVJSOiBhc3Nl
cnRUcnVlIGZhaWxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUuanMgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzllODg1NTRjNTAuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQx
ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBD
b25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJv
cGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGlj
cywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhl
IAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3Lncz
Lm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0q
LwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0
LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlv
biBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEv
RE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNSI7Ci0gICB9Ci0K
LXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0v
LyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZv
cmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFy
ZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRv
Y3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAg
ICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQot
Ly8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8K
LWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsK
LSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxk
ZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNv
bmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAg
ICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRl
ZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9j
c0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAK
LSAgICAgIHZhciBvdGhlckRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMub3Ro
ZXJEb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIG90aGVyRG9jUmVmID0gdGhpcy5vdGhl
ckRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChvdGhlckRvY1JlZiwg
Im90aGVyRG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVk
ID09IDIpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAg
IH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWls
ZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQot
fQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9u
IG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3Rz
LgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNv
bXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dz
IHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24g
bG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMikgewotICAgICAgICBz
ZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BdHRl
bXB0IHRvIGFwcGVuZCBhIG5vZGUgZnJvbSBhbm90aGVyIGRvY3VtZW50IHRvIGFuIGF0dHJpYnV0
ZSB3aGljaCBzaG91bGQgcmVzdWx0Ci1pbiBhIFdST05HX0RPQ1VNRU5UX0VSUi4KLQotKiBAYXV0
aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9N
LUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25l
LWNvcmUjSUQtMTg0RTcxMDcKLSovCi1mdW5jdGlvbiBoY19hdHRyYXBwZW5kY2hpbGQ1KCkgewot
ICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNf
YXR0cmFwcGVuZGNoaWxkNSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAg
dmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0
ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRl
eHROb2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICB2
YXIgb3RoZXJEb2M7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYg
KHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhp
cy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFm
ZiIpOwotICAgICAgCi0gICAgICB2YXIgb3RoZXJEb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5
cGVvZih0aGlzLm90aGVyRG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBvdGhlckRvY1Jl
ZiA9IHRoaXMub3RoZXJEb2M7Ci0gICAgICB9Ci0gICAgICBvdGhlckRvYyA9IGxvYWQob3RoZXJE
b2NSZWYsICJvdGhlckRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2Mu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255
bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwot
Ci0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAg
ICAgIHRleHROb2RlID0gb3RoZXJEb2MuY3JlYXRlVGV4dE5vZGUoInRlcmRheSIpOwotICAgICAg
Ci0JewotCQlzdWNjZXNzID0gZmFsc2U7Ci0JCXRyeSB7Ci0gICAgICAgICAgICByZXR2YWwgPSB0
aXRsZUF0dHIuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOwotICAgICAgICB9Ci0JCWNhdGNoKGV4KSB7
Ci0gICAgICBzdWNjZXNzID0gKHR5cGVvZihleC5jb2RlKSAhPSAndW5kZWZpbmVkJyAmJiBleC5j
b2RlID09IDQpOwotCQl9Ci0JCWFzc2VydFRydWUoInRocm93X1dST05HX0RPQ1VNRU5UX0VSUiIs
c3VjY2Vzcyk7Ci0JfQotCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19h
dHRyYXBwZW5kY2hpbGQ1KCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNS54aHRtbCBiL0xheW91dFRlc3RzL2RvbS94
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1LnhodG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2MjI3NzEzM2RhNy4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUueGh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz48P1RFU1QtU1RZ
TEUgUElEQVRBPz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1M
IDEuMCBTdHJpY3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBbCi0gICA8IUVOVElUWSBh
bHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+Ci0gICA8IUVOVElUWSBn
YW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsiPgotICAgPCFFTlRJVFkg
ZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1MDsiPgotICAgPCFOT1RB
VElPTiBub3RhdGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAgIDwhTk9UQVRJT04gbm90
YXRpb24yIFNZU1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJU1QgYWNyb255bSBkaXIg
Q0RBVEEgImx0ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRt
bCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhlYWQ+PG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz48
dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iaGNfYXR0cmFwcGVuZGNoaWxkNS5qcyIvPjxzY3JpcHQgdHlwZT0ndGV4dC9q
YXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3Jp
cHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1Q
MDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFj
Y291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5G
ZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxh
cywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+
Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVu
dGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENE
QVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgot
ICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVt
YWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxs
YXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAz
PC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1l
bnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcs
IHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgot
ICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0
b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFz
LCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4K
LSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lh
bGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8
L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ2LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ2LWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFhMTdlNGY5YmYuLjAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
YXBwZW5kY2hpbGQ2LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAot
VGVzdAlodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hj
X2F0dHJhcHBlbmRjaGlsZDYKLVN0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNi5qcyBiL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ2LmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWIzZDgwNTg2Ny4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDYuanMKKysr
IC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0y
MDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRl
IG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3Jt
YXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVz
ZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2Fy
ZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkg
b2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAK
LQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQt
c29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0
IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0
ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0
cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBw
ZW5kY2hpbGQ2IjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWls
ZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRl
c3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgot
Ly8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNo
cm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNl
LCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0
aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJv
ZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdl
U3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVz
IHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAg
ICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRl
ZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVv
Zih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7
Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhj
X3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAg
ICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNo
KGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAg
ICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8v
ICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBl
YWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hl
biBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAg
ICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBi
b2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkg
ewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMg
PSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1DcmVhdGVzIGFuIG5ldyBhdHRy
aWJ1dGUgbm9kZSBhbmQgYXBwZW5kcyBhIHRleHQgbm9kZS4KLQotKiBAYXV0aG9yIEN1cnQgQXJu
b2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5
ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTg0
RTcxMDcKLSovCi1mdW5jdGlvbiBoY19hdHRyYXBwZW5kY2hpbGQ2KCkgewotICAgdmFyIHN1Y2Nl
c3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cmFwcGVuZGNo
aWxkNiIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1M
aXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2
YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAg
ICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBk
b2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcp
IHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2Fk
KGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgdGl0bGVBdHRyID0gZG9jLmNyZWF0
ZUF0dHJpYnV0ZSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2Rl
KCJZZXN0ZXJkYXkiKTsKLSAgICAgIHJldHZhbCA9IHRpdGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0
Tm9kZSk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1
YWxzKCJhdHRyVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxl
QXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlll
c3RlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAg
ICAgYXNzZXJ0RXF1YWxzKCJyZXR2YWxWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUpOwotICAgICAg
IGxhc3RDaGlsZCA9IHRpdGxlQXR0ci5sYXN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gbGFzdENo
aWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJsYXN0Q2hpbGRWYWx1ZSIsIlll
c3RlcmRheSIsdmFsdWUpOwotICAgICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkg
ewotICAgaGNfYXR0cmFwcGVuZGNoaWxkNigpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDYueGh0bWwgYi9MYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNi54aHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQyYWI4NGZiNjAuLjAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ2Lnho
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+
PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0Mv
L0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAg
PCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAg
PCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAg
IDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4K
LSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5P
VEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFj
cm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAx
Li0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJhcHBlbmRjaGlsZDYuanMiLz48c2NyaXB0IHR5
cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3Qo
KTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4K
LSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgot
ICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+
Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGgg
QXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVN
UDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rp
b24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBh
ZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8
L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgot
ICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4m
YmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8
ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29k
ZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFy
PiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3gg
MjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAw
MDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29u
bmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJv
YWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1Q
MDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1
dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRl
eGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRu
b2RlczEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWU3NjE0
MGM5My4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJjaGlsZG5vZGVzMS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICsw
LDAgQEAKLVRlc3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEv
Y29yZS9oY19hdHRyY2hpbGRub2RlczEKLVN0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxLmpzIGIvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMS5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMwODhmNDNhNzYuLjAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczEuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAw
MS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0
dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5m
b3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMg
UmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0
d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmln
aHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0
aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBv
ZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAi
aHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRy
Y2hpbGRub2RlczEiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1
aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUg
dGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUu
Ci0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3lu
Y2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndp
c2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNl
cHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUg
Ym9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBh
Z2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0
ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0g
ICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9h
ZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlw
ZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRv
YzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAi
aGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAg
ICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0
Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAg
ICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwot
Ly8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAg
IGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBX
aGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8g
ICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAg
IGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUo
KSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1
cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUNoZWNrcyB0aGF0IE5vZGUu
Y2hpbGROb2RlcyBmb3IgYW4gYXR0cmlidXRlIG5vZGUgY29udGFpbnMKLXRoZSBleHBlY3RlZCB0
ZXh0IG5vZGUuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMu
b3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYz
NzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0x
LTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTE0NTE0NjA5ODcKLSovCi1mdW5jdGlvbiBoY19h
dHRyY2hpbGRub2RlczEoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxp
emF0aW9uKGJ1aWxkZXIsICJoY19hdHRyY2hpbGRub2RlczEiKSAhPSBudWxsKSByZXR1cm47Ci0g
ICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsK
LSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2
YWx1ZTsKLSAgICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciBjaGlsZE5vZGVzOwotICAgICAg
Ci0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9
ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAg
ICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1M
aXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9k
ZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0
cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRp
dGxlIik7Ci0gICAgICBjaGlsZE5vZGVzID0gdGl0bGVBdHRyLmNoaWxkTm9kZXM7Ci0KLSAgICAg
IGFzc2VydFNpemUoImNoaWxkTm9kZXNTaXplIiwxLGNoaWxkTm9kZXMpOwotdGV4dE5vZGUgPSBj
aGlsZE5vZGVzLml0ZW0oMCk7Ci0gICAgICB2YWx1ZSA9IHRleHROb2RlLm5vZGVWYWx1ZTsKLQot
ICAgICAgYXNzZXJ0RXF1YWxzKCJjaGlsZDFJc1llcyIsIlllcyIsdmFsdWUpOwotICAgICAgIHRl
eHROb2RlID0gY2hpbGROb2Rlcy5pdGVtKDEpOwotICAgICAgYXNzZXJ0TnVsbCgic2Vjb25kSXRl
bUlzTnVsbCIsdGV4dE5vZGUpOwotICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkg
ewotICAgaGNfYXR0cmNoaWxkbm9kZXMxKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9k
b20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxLnhodG1sIGIvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMS54aHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y1NTJlNmU3YzUuLjAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczEueGh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz48P1RF
U1QtU1RZTEUgUElEQVRBPz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0vL1czQy8vRFRE
IFhIVE1MIDEuMCBTdHJpY3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBbCi0gICA8IUVO
VElUWSBhbHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+Ci0gICA8IUVO
VElUWSBnYW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsiPgotICAgPCFF
TlRJVFkgZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1MDsiPgotICAg
PCFOT1RBVElPTiBub3RhdGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAgIDwhTk9UQVRJ
T04gbm90YXRpb24yIFNZU1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJU1QgYWNyb255
bSBkaXIgQ0RBVEEgImx0ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+
Ci08aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhlYWQ+PG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRG
LTgiLz48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmNoaWxkbm9kZXMxLmpzIi8+PHNjcmlwdCB0eXBlPSd0
ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08
L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxl
bT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNv
ZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8
dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4g
RGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAy
PC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdp
dGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNl
bnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJv
bmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZh
cj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7
IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVN
UDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVw
YXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVs
dGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IEly
dmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwv
ZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBE
aXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4K
LSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBE
YWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8
L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBT
cGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4K
LSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5
ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMy
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiNTYyMjhlNjMu
LjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyY2hpbGRub2RlczItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBA
Ci1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUv
aGNfYXR0cmNoaWxkbm9kZXMyCi1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMi5qcyBiL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczIuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YzZjZDUwNGU1Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMyLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAw
NCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBv
ZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0
aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2Vy
dmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUg
TGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0K
LVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNv
ZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBp
ZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVz
dAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6
Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxk
bm9kZXMyIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVy
ID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3Rp
bmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8K
LS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9u
b3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0
aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9u
IGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkg
b2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRl
c3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBi
dWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9
IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0
aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0g
ICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0
YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAg
ICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4
KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAg
IHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAg
VGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNo
IGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBl
dmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAg
dGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5
IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewot
ICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAn
Y29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1DaGVja3MgTm9kZS5jaGlsZE5vZGVz
IGZvciBhbiBhdHRyaWJ1dGUgd2l0aCBtdWx0aXBsZSBjaGlsZCBub2Rlcy4KLQotKiBAYXV0aG9y
IEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxl
dmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDov
L3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNv
cmUjSUQtMTQ1MTQ2MDk4NwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJjaGlsZG5vZGVzMigpIHsKLSAg
IHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0
dHJjaGlsZG5vZGVzMiIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFy
IGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7
Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHRO
b2RlOwotICAgICAgdmFyIGNoaWxkTm9kZXM7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgCi0g
ICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1
bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAg
ZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0
ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9
IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmli
dXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxl
Iik7Ci0gICAgICBjaGlsZE5vZGVzID0gdGl0bGVBdHRyLmNoaWxkTm9kZXM7Ci0KLSAgICAgIHRl
eHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIHJldHZhbCA9IHRp
dGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICBhc3NlcnRTaXplKCJjaGlsZE5v
ZGVzU2l6ZSIsMixjaGlsZE5vZGVzKTsKLXRleHROb2RlID0gY2hpbGROb2Rlcy5pdGVtKDApOwot
ICAgICAgdmFsdWUgPSB0ZXh0Tm9kZS5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygi
Y2hpbGQxSXNZZXMiLCJZZXMiLHZhbHVlKTsKLSAgICAgICB0ZXh0Tm9kZSA9IGNoaWxkTm9kZXMu
aXRlbSgxKTsKLSAgICAgIHZhbHVlID0gdGV4dE5vZGUubm9kZVZhbHVlOwotCi0gICAgICBhc3Nl
cnRFcXVhbHMoImNoaWxkMklzVGVyZGF5IiwidGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgdGV4dE5v
ZGUgPSBjaGlsZE5vZGVzLml0ZW0oMik7Ci0gICAgICBhc3NlcnROdWxsKCJ0aGlyZEl0ZW1Jc051
bGwiLHRleHROb2RlKTsKLSAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAg
IGhjX2F0dHJjaGlsZG5vZGVzMigpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3ho
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMi54aHRtbCBiL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczIueGh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGI0NjA4M2I4MmJkLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMyLnhodG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNU
WUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRN
TCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkg
YWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkg
Z2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZ
IGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9U
QVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5v
dGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGly
IENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0
bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+
PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9ImhjX2F0dHJjaGlsZG5vZGVzMi5qcyIvPjxzY3JpcHQgdHlwZT0ndGV4dC9q
YXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3Jp
cHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1Q
MDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFj
Y291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5G
ZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxh
cywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+
Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVu
dGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENE
QVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgot
ICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVt
YWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxs
YXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAz
PC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1l
bnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcs
IHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgot
ICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0
b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFz
LCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4K
LSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lh
bGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8
L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2RlMS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9kZTEtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2RjMTY3Y2RhNi4uMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjbG9u
ZW5vZGUxLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlo
dHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJj
bG9uZW5vZGUxCi1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3ho
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjbG9uZW5vZGUxLmpzIGIvTGF5b3V0VGVzdHMvZG9tL3ho
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjbG9uZW5vZGUxLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3NjY3ZTg1NTg1NS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9t
L3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjbG9uZW5vZGUxLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMTMyICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRl
IFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5
LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRo
ZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdv
cmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0g
aW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8v
d3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIx
MjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRo
ZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1m
dW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3Jn
LzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9kZTEiOwotICAg
fQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0v
LwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsg
YmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVy
ZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAg
ICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8v
ICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRl
bHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4K
LS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmlu
Zyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBi
dWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVh
dGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAot
ICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAn
dW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAg
IGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAg
ICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0
YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0
Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMg
bG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9u
b3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0
dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3Qg
dG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9j
c0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0g
ICAgfQotfQotCi0KLS8qKgotKiAKLUFwcGVuZHMgYSB0ZXh0IG5vZGUgdG8gYW4gYXR0cmlidXRl
IGFuZCBjbG9uZXMgdGhlIG5vZGUuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0
dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9u
ZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVD
LURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTNBMEVEMEE0Ci0qLwotZnVu
Y3Rpb24gaGNfYXR0cmNsb25lbm9kZTEoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVj
a0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRyY2xvbmVub2RlMSIpICE9IG51bGwpIHJl
dHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRl
c3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAg
ICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAg
ICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICB2YXIgY2xvbmVkVGl0bGU7Ci0gICAgICAKLSAgICAg
IHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVm
aW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2Mg
PSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBk
b2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNy
b255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVz
OwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsK
LSAgICAgIHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIHJl
dHZhbCA9IHRpdGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICBjbG9uZWRUaXRs
ZSA9IHRpdGxlQXR0ci5jbG9uZU5vZGUoZmFsc2UpOwotICAgICAgdGV4dE5vZGUubm9kZVZhbHVl
ID0gInRleHRfbm9kZV9ub3RfY2xvbmVkIjsKLQotICAgICAgdmFsdWUgPSBjbG9uZWRUaXRsZS52
YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVl
KTsKLSAgICAgICB2YWx1ZSA9IGNsb25lZFRpdGxlLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0
RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgbGFzdENo
aWxkID0gY2xvbmVkVGl0bGUubGFzdENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGxhc3RDaGlsZC5u
b2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygibGFzdENoaWxkVmFsdWUiLCJ0ZXJkYXki
LHZhbHVlKTsKLSAgICAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhj
X2F0dHJjbG9uZW5vZGUxKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9kZTEueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9kZTEueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGIwNjg0MjE4OWU0Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9k
b20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9kZTEueGh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz48P1RFU1QtU1RZTEUgUElE
QVRBPz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBT
dHJpY3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBbCi0gICA8IUVOVElUWSBhbHBoYSAi
JiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+Ci0gICA8IUVOVElUWSBnYW1tYSAi
JiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsiPgotICAgPCFFTlRJVFkgZXBzaWxv
biAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1MDsiPgotICAgPCFOT1RBVElPTiBu
b3RhdGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24y
IFNZU1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJU1QgYWNyb255bSBkaXIgQ0RBVEEg
Imx0ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbCB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz48dGl0bGU+
aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZ4
aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iaGNfYXR0cmNsb25lbm9kZTEuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlw
dCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVh
ZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2Vt
PgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50
PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92
YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFz
IDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ry
b25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZl
cmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rp
b24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+
U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2Ft
bWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0g
IDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFn
ZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAg
PGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5
ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9u
Zz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2Rl
PgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMg
OTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJv
bmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2Nv
ZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3Jvbnlt
PgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmZpcnN0Y2hpbGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJmaXJzdGNoaWxkLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEyYWIzMjg2NzcuLjAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyZmlyc3RjaGlsZC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3QJaHR0cDovL3d3
dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyZmlyc3RjaGls
ZAotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyZmlyc3RjaGlsZC5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyZmlyc3RjaGlsZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjhmOGI1MmFkN2MuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyZmlyc3RjaGlsZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyNyAr
MCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29u
c29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3Bl
YW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3Ms
IEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAK
LWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5v
cmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8K
LQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4K
LSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24g
Z2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RP
TS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJmaXJzdGNoaWxkIjsKLSAgIH0KLQotdmFy
IGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAg
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQot
Ly8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5v
IGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1l
bnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAg
aXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAg
ICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVu
Y3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAg
dHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwg
bWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmln
dXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZh
ciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5l
ZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9h
ZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAg
ICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAn
Y29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlh
bGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdj
b21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVk
IG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3Rh
cnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2Fk
ZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNo
YW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4
ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQg
PT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0K
LQotCi0vKioKLSogCi1DaGVja3MgdGhhdCBOb2RlLmZpcnN0Q2hpbGQgZm9yIGFuIGF0dHJpYnV0
ZSBub2RlIGNvbnRhaW5zCi10aGUgZXhwZWN0ZWQgdGV4dCBub2RlLgotCi0qIEBhdXRob3IgQ3Vy
dCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwt
MS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJ
RC0xNjk3MjczODgKLSovCi1mdW5jdGlvbiBoY19hdHRyZmlyc3RjaGlsZCgpIHsKLSAgIHZhciBz
dWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJmaXJz
dGNoaWxkIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255
bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAg
IHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0g
ICAgICB2YXIgb3RoZXJDaGlsZDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0g
ICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NS
ZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwg
ImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAg
ICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9
IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgdGV4dE5vZGUgPSB0aXRs
ZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgYXNzZXJ0Tm90TnVsbCgidGV4dE5vZGVOb3ROdWxs
Iix0ZXh0Tm9kZSk7Ci12YWx1ZSA9IHRleHROb2RlLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0
RXF1YWxzKCJjaGlsZDFJc1llcyIsIlllcyIsdmFsdWUpOwotICAgICAgIG90aGVyQ2hpbGQgPSB0
ZXh0Tm9kZS5uZXh0U2libGluZzsKLQotICAgICAgYXNzZXJ0TnVsbCgibmV4dFNpYmxpbmdJc051
bGwiLG90aGVyQ2hpbGQpOwotICAgIG90aGVyQ2hpbGQgPSB0ZXh0Tm9kZS5wcmV2aW91c1NpYmxp
bmc7Ci0KLSAgICAgIGFzc2VydE51bGwoInByZXZpb3VzU2libGluZ0lzTnVsbCIsb3RoZXJDaGls
ZCk7Ci0gICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyZmly
c3RjaGlsZCgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJmaXJzdGNoaWxkLnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJmaXJzdGNoaWxkLnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1NjQxYTdiZjA0Yy4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJmaXJzdGNoaWxkLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08
IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9F
TiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+
Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+
Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5
OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24x
IFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0g
Im5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgot
XT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZm
PC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMi
Lz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imhj
X2F0dHJmaXJzdGNoaWxkLmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0
aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkg
b25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0
cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4g
ICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8
YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwv
YWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0
aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51
bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGgg
YSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFy
eTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFj
cm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4
NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25n
PlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2Rl
PgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3Jvbnlt
IHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fj
cm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBP
Y29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1
cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVy
dCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8
c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+
Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJoYXNjaGlsZG5vZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaGFzY2hpbGRub2Rlcy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzM2UwNzNkM2I2Li4wMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmhhc2NoaWxkbm9kZXMt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93
d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmhhc2NoaWxk
bm9kZXMKLVN0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmhhc2NoaWxkbm9kZXMuanMgYi9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmhhc2NoaWxkbm9kZXMuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDcxNDg3YzNiZTFjLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9k
b20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmhhc2NoaWxkbm9kZXMuanMKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTQgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxk
IFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hu
b2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5k
IE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRo
aXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNl
IFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0
dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUt
MjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZp
ZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAg
Ki8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53
My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaGFzY2hpbGRub2Rl
cyI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51
bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZy
YW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAg
IElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwot
Ly8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0
YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBp
bW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRo
ZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9
ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRv
Y3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRl
ciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwot
ICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5k
b2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAg
fQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIp
OwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0
VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewot
ICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMg
bWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3lj
aHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkg
c3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBw
YWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0
aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBp
ZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBs
ZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQ2hlY2tzIHRoYXQgTm9kZS5oYXNDaGlsZE5v
ZGVzKCkgaXMgdHJ1ZSBmb3IgYW4gYXR0cmlidXRlIHdpdGggY29udGVudC4KLQotKiBAYXV0aG9y
IEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxl
dmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDov
L3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNv
cmUjSUQtODEwNTk0MTg3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmhhc2NoaWxkbm9kZXMoKSB7Ci0g
ICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19h
dHRyaGFzY2hpbGRub2RlcyIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAg
dmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0
ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIGhhc0NoaWxkTm9kZXM7Ci0gICAg
ICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykg
IT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0g
ICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255
bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3RO
b2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5h
dHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgi
dGl0bGUiKTsKLSAgICAgIGhhc0NoaWxkTm9kZXMgPSB0aXRsZUF0dHIuaGFzQ2hpbGROb2Rlcygp
OwotICAgICAgYXNzZXJ0VHJ1ZSgiaGFzQ2hpbGRyZW5Jc1RydWUiLGhhc0NoaWxkTm9kZXMpOwot
Ci19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyaGFzY2hpbGRub2Rl
cygpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJoYXNjaGlsZG5vZGVzLnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJoYXNjaGlsZG5vZGVzLnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjM2ZkNDc2MWQ1Mi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJoYXNjaGlsZG5vZGVzLnhodG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+
Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0
Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1
OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3
OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYj
OTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRp
b24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNU
RU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIi
PgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0
YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwu
anMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
ImhjX2F0dHJoYXNjaGlsZG5vZGVzLmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQn
PmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+
PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4K
LSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwv
Y29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5
ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9u
Zz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJl
bmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9u
IHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNl
Y3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4K
LSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1h
OwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8
c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2Vy
PC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1
NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+
SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4K
LSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4
NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25n
PlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2Rl
PgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4K
LSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMS1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhNWMwNDcxNzNlLi4wMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJl
Zm9yZTEtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0
dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmlu
c2VydGJlZm9yZTEKLVN0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20v
eGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTEuanMgYi9MYXlvdXRUZXN0cy9k
b20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTEuanMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDg5YWE5OWUyMWJiLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTEuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0
IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9m
IFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRp
Y3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2
ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBM
aWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQot
WzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29m
dHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlk
ZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0
Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDov
L3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0
YmVmb3JlMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRl
ciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0
aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8v
Ci0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJv
bm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwg
dGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlv
biBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5
IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0
YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0
ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAg
YnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQg
PSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2Yo
dGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwot
ICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19z
dGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAg
ICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChl
eCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAg
ICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAg
IFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFj
aCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4g
ZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAg
IHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9k
eSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsK
LSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0g
J2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQXBwZW5kcyBhIHRleHQgbm9kZSB0
byBhbiBhdHRyaWJ1dGUgYW5kIGNoZWNrcyBpZiB0aGUgdmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUg
aXMgY2hhbmdlZC4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53
My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQt
NjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVs
LTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtOTUyMjgwNzI3Ci0qLwotZnVuY3Rpb24gaGNf
YXR0cmluc2VydGJlZm9yZTEoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRp
YWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRyaW5zZXJ0YmVmb3JlMSIpICE9IG51bGwpIHJldHVy
bjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3RO
b2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAg
dmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAg
IHZhciBmaXJzdENoaWxkOwotICAgICAgdmFyIGxhc3RDaGlsZDsKLSAgICAgIHZhciByZWZDaGls
ZCA9IG51bGw7Ci0KLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAo
dHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlz
LmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZm
Iik7Ci0gICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255
bSIpOwotICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmli
dXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0
ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4
dE5vZGUoInRlcmRheSIpOwotICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmluc2VydEJlZm9yZSh0
ZXh0Tm9kZSxyZWZDaGlsZCk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAg
ICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2
YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5v
ZGVWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVW
YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJyZXR2YWxWYWx1ZSIsInRlcmRheSIsdmFsdWUp
OwotICAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgdmFs
dWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJzdENo
aWxkVmFsdWUiLCJZZXMiLHZhbHVlKTsKLSAgICAgICBsYXN0Q2hpbGQgPSB0aXRsZUF0dHIubGFz
dENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGxhc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFz
c2VydEVxdWFscygibGFzdENoaWxkVmFsdWUiLCJ0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICAKLX0K
LQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJpbnNlcnRiZWZvcmUxKCk7
Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmluc2VydGJlZm9yZTEueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmluc2VydGJlZm9yZTEueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZiYjVmYThmYWRkLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTEueGh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2
MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz48P1RFU1QtU1RZTEUgUElEQVRBPz4KLTwh
RE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VO
IgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBbCi0gICA8IUVOVElUWSBhbHBoYSAiJiM5NDU7Ij4K
LSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+Ci0gICA8IUVOVElUWSBnYW1tYSAiJiM5NDc7Ij4K
LSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsiPgotICAgPCFFTlRJVFkgZXBzaWxvbiAiJiM5NDk7
Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1MDsiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjEg
UFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24yIFNZU1RFTSAi
bm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJU1QgYWNyb255bSBkaXIgQ0RBVEEgImx0ciI+Ci1d
PgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbCB4bWxucz0naHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz48dGl0bGU+aGNfc3RhZmY8
L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZ4aHRtbC5qcyIv
PjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNf
YXR0cmluc2VydGJlZm9yZTEuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVu
Y3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9k
eSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8
c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2Rl
PiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0g
IDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUx
PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1h
cnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2Ug
bnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0
aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0
YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8
YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0g
OTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJv
bmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2Nv
ZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9u
eW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1Mzwv
YWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55
IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8
c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0i
WWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8
L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9i
ZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0g
IDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0i
WWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwv
cD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUyLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVjYjliYzdhYWQuLjAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3Jl
Mi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3QJaHR0cDov
L3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0
YmVmb3JlMgotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMi5qcyBiL0xheW91dFRlc3RzL2RvbS94
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMi5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2M0ZjUwZTMwMDEuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMi5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29y
bGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVj
aG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBh
bmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4g
VGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vu
c2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0g
aHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2Fy
ZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRp
ZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAg
ICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3
LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZv
cmUyIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0g
bnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3Rpbmcg
ZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8v
ICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3Vz
Ci0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUg
c3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlz
IGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2Yg
dGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVz
ID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3Qg
ZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWls
ZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7
Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlz
LmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAg
ICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZm
Iik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBz
ZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7
Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNl
dFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhp
cyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFz
eWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVy
eSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhl
IHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9m
IHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAg
IGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29t
cGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1QcmVwZW5kcyBhIHRleHQgbm9kZSB0byBh
biBhdHRyaWJ1dGUgYW5kIGNoZWNrcyBpZiB0aGUgdmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMg
Y2hhbmdlZC4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3
NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEt
MTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtOTUyMjgwNzI3Ci0qLwotZnVuY3Rpb24gaGNfYXR0
cmluc2VydGJlZm9yZTIoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxp
emF0aW9uKGJ1aWxkZXIsICJoY19hdHRyaW5zZXJ0YmVmb3JlMiIpICE9IG51bGwpIHJldHVybjsK
LSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2Rl
OwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFy
IHZhbHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZh
ciBsYXN0Q2hpbGQ7Ci0gICAgICB2YXIgZmlyc3RDaGlsZDsKLSAgICAgIHZhciByZWZDaGlsZDsK
LSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMu
ZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAg
IH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBh
Y3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAg
dGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3RO
b2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJ
dGVtKCJ0aXRsZSIpOwotICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoInRlcmRh
eSIpOwotICAgICAgcmVmQ2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgcmV0
dmFsID0gdGl0bGVBdHRyLmluc2VydEJlZm9yZSh0ZXh0Tm9kZSxyZWZDaGlsZCk7Ci0gICAgICB2
YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUi
LCJ0ZXJkYXlZZXMiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7
Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsInRlcmRheVllcyIsdmFsdWUp
OwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxz
KCJyZXR2YWxWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIGZpcnN0Q2hpbGQgPSB0aXRs
ZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsK
LQotICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJzdENoaWxkVmFsdWUiLCJ0ZXJkYXkiLHZhbHVlKTsK
LSAgICAgICBsYXN0Q2hpbGQgPSB0aXRsZUF0dHIubGFzdENoaWxkOwotCi0gICAgICB2YWx1ZSA9
IGxhc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygibGFzdENoaWxkVmFs
dWUiLCJZZXMiLHZhbHVlKTsKLSAgICAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgp
IHsKLSAgIGhjX2F0dHJpbnNlcnRiZWZvcmUyKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTIueGh0bWwgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTIueGh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MWU1ZTVhOTQ4Li4wMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9y
ZTIueGh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIx
LjAiPz48P1RFU1QtU1RZTEUgUElEQVRBPz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0v
L1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBb
Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+
Ci0gICA8IUVOVElUWSBnYW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsi
PgotICAgPCFFTlRJVFkgZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1
MDsiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAg
IDwhTk9UQVRJT04gbm90YXRpb24yIFNZU1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJ
U1QgYWNyb255bSBkaXIgQ0RBVEEgImx0ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVt
YmVyIDEuLS0+Ci08aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhl
YWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9VVRGLTgiLz48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmluc2VydGJlZm9yZTIuanMiLz48c2Ny
aXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFy
dFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4K
LSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ry
b25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAw
PC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAg
Tm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAg
PGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFU
QVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBp
cyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1w
O3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwv
c3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0i
WWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxw
PgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgot
ICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgot
ICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5Q
TyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxl
bT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+
UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZl
bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNv
dXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8
ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2Rl
PkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+
bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2
aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9y
ZTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJpbnNlcnRiZWZvcmUzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDMzYmI4ZDlkYjAuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwyICswLDAgQEAKLVRlc3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1T
dWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMwotU3RhdHVzCVN1Y2Nlc3MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0
YmVmb3JlMy5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5z
ZXJ0YmVmb3JlMy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NiMjRjZGMxYmEu
LjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyaW5zZXJ0YmVmb3JlMy5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8q
Ci1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0o
TWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2gg
Q29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVy
c2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
Ci10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1
bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8q
KgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0
dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJ
KCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRl
L2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUzIjsKLSAgIH0KLQotdmFyIGRvY3NMb2Fk
ZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5j
dGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBy
dW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3Vy
YXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGlu
ZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRv
IGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFp
c2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0
VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAg
ICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93
IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxk
ZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYg
PSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAg
ICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHBy
ZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChk
b2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUn
OwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25F
cnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7
Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBj
b21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBz
ZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1l
bnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hp
Y2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgot
ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewot
ICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioK
LSogCi1BcHBlbmRzIGEgZG9jdW1lbnQgZnJhZ21lbnQgdG8gYW4gYXR0cmlidXRlIGFuZCBjaGVj
a3MgaWYgdGhlIHZhbHVlIG9mCi10aGUgYXR0cmlidXRlIGlzIGNoYW5nZWQuCi0KLSogQGF1dGhv
ciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1M
ZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1j
b3JlI0lELTk1MjI4MDcyNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJpbnNlcnRiZWZvcmUzKCkgewot
ICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNf
YXR0cmluc2VydGJlZm9yZTMiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAg
IHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBhdHRyaWJ1
dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIHZhciB0
ZXJOb2RlOwotICAgICAgdmFyIGRheU5vZGU7Ci0gICAgICB2YXIgZG9jRnJhZzsKLSAgICAgIHZh
ciByZXR2YWw7Ci0gICAgICB2YXIgZmlyc3RDaGlsZDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0g
ICAgICB2YXIgcmVmQ2hpbGQgPSBudWxsOwotCi0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBu
dWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAg
ICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwg
ImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgz
KTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRs
ZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRlck5vZGUg
PSBkb2MuY3JlYXRlVGV4dE5vZGUoInRlciIpOwotICAgICAgZGF5Tm9kZSA9IGRvYy5jcmVhdGVU
ZXh0Tm9kZSgiZGF5Iik7Ci0gICAgICBkb2NGcmFnID0gZG9jLmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKTsKLSAgICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5kQ2hpbGQodGVyTm9kZSk7Ci0gICAg
ICByZXR2YWwgPSBkb2NGcmFnLmFwcGVuZENoaWxkKGRheU5vZGUpOwotICAgICAgcmV0dmFsID0g
dGl0bGVBdHRyLmluc2VydEJlZm9yZShkb2NGcmFnLHJlZkNoaWxkKTsKLSAgICAgIHZhbHVlID0g
dGl0bGVBdHRyLnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1ZSIsIlllc3Rl
cmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAg
ICAgYXNzZXJ0RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAg
ICAgdmFsdWUgPSByZXR2YWwubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnROdWxsKCJyZXR2YWxW
YWx1ZSIsdmFsdWUpOwotICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQot
ICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxz
KCJmaXJzdENoaWxkVmFsdWUiLCJZZXMiLHZhbHVlKTsKLSAgICAgICBsYXN0Q2hpbGQgPSB0aXRs
ZUF0dHIubGFzdENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGxhc3RDaGlsZC5ub2RlVmFsdWU7Ci0K
LSAgICAgIGFzc2VydEVxdWFscygibGFzdENoaWxkVmFsdWUiLCJkYXkiLHZhbHVlKTsKLSAgICAg
ICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJpbnNlcnRiZWZv
cmUzKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmluc2VydGJlZm9yZTMueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM1Nzk5NDU3MTUxLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMueGh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz48P1RFU1QtU1RZTEUgUElEQVRB
Pz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJp
Y3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBbCi0gICA8IUVOVElUWSBhbHBoYSAiJiM5
NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+Ci0gICA8IUVOVElUWSBnYW1tYSAiJiM5
NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsiPgotICAgPCFFTlRJVFkgZXBzaWxvbiAi
JiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1MDsiPgotICAgPCFOT1RBVElPTiBub3Rh
dGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24yIFNZ
U1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJU1QgYWNyb255bSBkaXIgQ0RBVEEgImx0
ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz48dGl0bGU+aGNf
c3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZ4aHRt
bC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iaGNfYXR0cmluc2VydGJlZm9yZTMuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlw
dCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVh
ZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2Vt
PgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50
PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92
YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFz
IDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ry
b25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZl
cmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rp
b24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+
U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2Ft
bWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0g
IDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFn
ZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAg
PGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5
ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9u
Zz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2Rl
PgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMg
OTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJv
bmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2Nv
ZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3Jvbnlt
PgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q0MTdhNDVhOWUuLjAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0
YmVmb3JlNC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3QJ
aHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRy
aW5zZXJ0YmVmb3JlNAotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNC5qcyBiL0xheW91dFRlc3Rz
L2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNC5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzAwZTYxZGNhMDQuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNC5qcworKysg
L2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIw
MDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUg
b2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1h
dGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNl
cnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJl
IExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBv
ZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAot
Ci1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1z
b2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQg
aWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRl
c3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRw
Oi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNl
cnRiZWZvcmU0IjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWls
ZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRl
c3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgot
Ly8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNo
cm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNl
LCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0
aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJv
ZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdl
U3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVz
IHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAg
ICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRl
ZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVv
Zih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7
Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhj
X3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAg
ICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNo
KGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAg
ICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8v
ICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBl
YWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hl
biBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAg
ICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBi
b2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkg
ewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMg
PSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1QcmVwZW5kcyBhIGRvY3VtZW50
IGZyYWdtZW50IHRvIGFuIGF0dHJpYnV0ZSBhbmQgY2hlY2tzIGlmIHRoZSB2YWx1ZSBvZgotdGhl
IGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBo
dHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1v
bmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JF
Qy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC05NTIyODA3MjcKLSovCi1m
dW5jdGlvbiBoY19hdHRyaW5zZXJ0YmVmb3JlNCgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlm
KGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJpbnNlcnRiZWZvcmU0IikgIT0g
bnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAg
ICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0
dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGVyTm9kZTsKLSAgICAgIHZhciBkYXlO
b2RlOwotICAgICAgdmFyIGRvY0ZyYWc7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZp
cnN0Q2hpbGQ7Ci0gICAgICB2YXIgbGFzdENoaWxkOwotICAgICAgdmFyIHJlZkNoaWxkOwotICAg
ICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2Mp
ICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQot
ICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9u
eW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0
Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUu
YXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0o
InRpdGxlIik7Ci0gICAgICB0ZXJOb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXIiKTsKLSAg
ICAgIGRheU5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoImRheSIpOwotICAgICAgZG9jRnJhZyA9
IGRvYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICByZXR2YWwgPSBkb2NGcmFnLmFw
cGVuZENoaWxkKHRlck5vZGUpOwotICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGlsZChk
YXlOb2RlKTsKLSAgICAgIHJlZkNoaWxkID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAg
IHJldHZhbCA9IHRpdGxlQXR0ci5pbnNlcnRCZWZvcmUoZG9jRnJhZyxyZWZDaGlsZCk7Ci0gICAg
ICB2YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFs
dWUiLCJ0ZXJkYXlZZXMiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFs
dWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsInRlcmRheVllcyIsdmFs
dWUpOwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0TnVs
bCgicmV0dmFsVmFsdWUiLHZhbHVlKTsKLSAgICBmaXJzdENoaWxkID0gdGl0bGVBdHRyLmZpcnN0
Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFz
c2VydEVxdWFscygiZmlyc3RDaGlsZFZhbHVlIiwidGVyIix2YWx1ZSk7Ci0gICAgICAgbGFzdENo
aWxkID0gdGl0bGVBdHRyLmxhc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBsYXN0Q2hpbGQubm9k
ZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImxhc3RDaGlsZFZhbHVlIiwiWWVzIix2YWx1
ZSk7Ci0gICAgICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRy
aW5zZXJ0YmVmb3JlNCgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3ho
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LnhodG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiNDkzMDUwZGIwOC4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LnhodG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNU
WUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRN
TCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkg
YWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkg
Z2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZ
IGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9U
QVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5v
dGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGly
IENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0
bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+
PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9ImhjX2F0dHJpbnNlcnRiZWZvcmU0LmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0
L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3Nj
cmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5F
TVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+
QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFy
PkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFs
bGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9l
bT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGgg
RW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQg
Q0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+
Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5G
ZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERh
bGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAw
MDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0
bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7
PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmlu
ZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+
Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJl
Y3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAg
PGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxs
YXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2Vt
PgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVj
aWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAg
PGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1
ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3Jl
NS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyNzJlNjM4MzE0
Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cmluc2VydGJlZm9yZTUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCww
IEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmluc2VydGJlZm9yZTUKLVN0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTUuanMgYi9M
YXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTUuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NzM3ZWRlMGRiLi4wMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9y
ZTUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOC
wqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMg
SW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1m
b3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1S
aWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LC
riBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQg
d2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9j
b3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRz
IFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRp
ZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJl
dHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9o
Y19hdHRyaW5zZXJ0YmVmb3JlNSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7
Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
IGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVz
dCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlv
bnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4g
IE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQg
dGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVy
aW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAg
IHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8v
ICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAg
ICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0gICAgICAg
Y2hlY2tGZWF0dXJlKCJYTUwiLCBudWxsKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAg
ICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykg
IT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0g
ICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0g
ICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBh
Z2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAg
CWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFn
ZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRo
b2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9u
b3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5j
aHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ug
c3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0
ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgr
K2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUn
OwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BdHRlbXB0IHRvIGFwcGVuZCBhIENEQVRBU2VjdGlv
biB0byBhbiBhdHRyaWJ1dGUgd2hpY2ggc2hvdWxkIHJlc3VsdAotaW4gYSBISUVSQVJDSFlfUkVR
VUVTVF9FUlIuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMu
b3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYz
NzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0x
LTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTk1MjI4MDcyNwotKi8KLWZ1bmN0aW9uIGhjX2F0
dHJpbnNlcnRiZWZvcmU1KCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFs
aXphdGlvbihidWlsZGVyLCAiaGNfYXR0cmluc2VydGJlZm9yZTUiKSAhPSBudWxsKSByZXR1cm47
Ci0gICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9k
ZTsKLSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZh
ciB2YWx1ZTsKLSAgICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2
YXIgcmVmQ2hpbGQgPSBudWxsOwotCi0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwot
ICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9j
UmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIs
ICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAg
ICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIg
PSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIAotCWlmKAotCQotCShi
dWlsZGVyLmNvbnRlbnRUeXBlID09ICJ0ZXh0L2h0bWwiKQotCi0JKSB7Ci0JCi0JewotCQlzdWNj
ZXNzID0gZmFsc2U7Ci0JCXRyeSB7Ci0gICAgICAgICAgICB0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVD
REFUQVNlY3Rpb24oInRlcmRheSIpOwotICAgICAgICB9Ci0JCWNhdGNoKGV4KSB7Ci0gICAgICBz
dWNjZXNzID0gKHR5cGVvZihleC5jb2RlKSAhPSAndW5kZWZpbmVkJyAmJiBleC5jb2RlID09IDkp
OwotCQl9Ci0JCWFzc2VydFRydWUoInRocm93X05PVF9TVVBQT1JURURfRVJSIixzdWNjZXNzKTsK
LQl9Ci0KLQl9Ci0JCi0JCWVsc2UgewotCQkJdGV4dE5vZGUgPSBkb2MuY3JlYXRlQ0RBVEFTZWN0
aW9uKCJ0ZXJkYXkiKTsKLSAgICAgIAotCXsKLQkJc3VjY2VzcyA9IGZhbHNlOwotCQl0cnkgewot
ICAgICAgICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmluc2VydEJlZm9yZSh0ZXh0Tm9kZSxyZWZD
aGlsZCk7Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9m
KGV4LmNvZGUpICE9ICd1bmRlZmluZWQnICYmIGV4LmNvZGUgPT0gMyk7Ci0JCX0KLQkJYXNzZXJ0
VHJ1ZSgidGhyb3dfSElFUkFSQ0hZX1JFUVVFU1RfRVJSIixzdWNjZXNzKTsKLQl9Ci0KLQkJfQot
CQotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmluc2VydGJlZm9y
ZTUoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRyaW5zZXJ0YmVmb3JlNS54aHRtbCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEv
Y29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNS54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWIyYWRhM2U2MjMuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNS54aHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDYwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/
PgotPCFET0NUWVBFIGh0bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmlj
dC8vRU4iCi0gICAieGh0bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0
NTsiPgotICAgPCFFTlRJVFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0
NzsiPgotICAgPCFFTlRJVFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICIm
Izk0OTsiPgotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0
aW9uMSBQVUJMSUMgIm5vdGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lT
VEVNICJub3RhdGlvbjJGaWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRy
Ij4KLV0+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19z
dGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1s
LmpzIi8+PHNjcmlwdCAgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJoY19hdHRyaW5zZXJ0YmVmb3JlNS5qcyIvPjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0
Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFk
Pjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1QMDAwMTwvZW0+
Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8
L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zh
cj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMg
OTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJv
bmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVy
ZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlv
biB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgotICA8Y29kZT5T
ZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+
Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1t
YTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAg
PHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdl
cjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwvdmFyPgotICA8
YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4
NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25n
PkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+
Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5
ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9u
Zz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29k
ZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+
Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTEwMWEzN2E4OC4uMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRi
ZWZvcmU2LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGVzdAlo
dHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJp
bnNlcnRiZWZvcmU2Ci1TdGF0dXMJZmFpbHVyZQotTWVzc2FnZQl0aHJvd19XUk9OR19ET0NVTUVO
VF9FUlI6IGFzc2VydFRydWUgZmFpbGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYuanMgYi9MYXlvdXRUZXN0cy9kb20v
eGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRjMDRmNjI3ZGE3Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDIgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdv
cmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRl
Y2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3Mg
YW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQu
IFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNl
bnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFd
IGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdh
cmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50
aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0g
ICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3
dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVm
b3JlNiI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9
IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5n
IGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0v
LyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91
cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhl
IHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBp
cyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9m
IHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1
cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0
IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVp
bGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAw
OwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhp
cy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAg
ICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFm
ZiIpOwotICAgICAgICAKLSAgICAgIHZhciBvdGhlckRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAo
dHlwZW9mKHRoaXMub3RoZXJEb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIG90aGVyRG9j
UmVmID0gdGhpcy5vdGhlckRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9h
ZChvdGhlckRvY1JlZiwgIm90aGVyRG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAg
IGlmIChkb2NzTG9hZGVkID09IDIpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29t
cGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6
YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21w
bGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9u
IHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRl
ZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQg
ZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5n
ZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1
dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0g
MikgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQot
Ci0vKioKLSogCi1BdHRlbXB0IHRvIGFwcGVuZCBhIHRleHQgbm9kZSBmcm9tIGFub3RoZXIgZG9j
dW1lbnQgdG8gYW4gYXR0cmlidXRlIHdoaWNoIHNob3VsZCByZXN1bHQKLWluIGEgV1JPTkdfRE9D
VU1FTlRfRVJSLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02
Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwt
MS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC05NTIyODA3MjcKLSovCi1mdW5jdGlvbiBoY19h
dHRyaW5zZXJ0YmVmb3JlNigpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlh
bGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJpbnNlcnRiZWZvcmU2IikgIT0gbnVsbCkgcmV0dXJu
OwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5v
ZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2
YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAg
dmFyIHJlZkNoaWxkID0gbnVsbDsKLQotICAgICAgdmFyIG90aGVyRG9jOwotICAgICAgCi0gICAg
ICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRl
ZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9j
ID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIAotICAgICAgdmFyIG90
aGVyRG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5vdGhlckRvYykgIT0gJ3Vu
ZGVmaW5lZCcpIHsKLSAgICAgICAgb3RoZXJEb2NSZWYgPSB0aGlzLm90aGVyRG9jOwotICAgICAg
fQotICAgICAgb3RoZXJEb2MgPSBsb2FkKG90aGVyRG9jUmVmLCAib3RoZXJEb2MiLCAiaGNfc3Rh
ZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3Jv
bnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRy
aWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmli
dXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXh0Tm9kZSA9IG90aGVyRG9jLmNy
ZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIAotCXsKLQkJc3VjY2VzcyA9IGZhbHNlOwot
CQl0cnkgewotICAgICAgICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmluc2VydEJlZm9yZSh0ZXh0
Tm9kZSxyZWZDaGlsZCk7Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3Mg
PSAodHlwZW9mKGV4LmNvZGUpICE9ICd1bmRlZmluZWQnICYmIGV4LmNvZGUgPT0gNCk7Ci0JCX0K
LQkJYXNzZXJ0VHJ1ZSgidGhyb3dfV1JPTkdfRE9DVU1FTlRfRVJSIixzdWNjZXNzKTsKLQl9Ci0K
LX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJpbnNlcnRiZWZvcmU2
KCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cmluc2VydGJlZm9yZTYueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmluc2VydGJlZm9yZTYueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQzZGZhZWRlNWI1Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYueGh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz48P1RFU1QtU1RZTEUgUElEQVRBPz4K
LTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3Qv
L0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBbCi0gICA8IUVOVElUWSBhbHBoYSAiJiM5NDU7
Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+Ci0gICA8IUVOVElUWSBnYW1tYSAiJiM5NDc7
Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsiPgotICAgPCFFTlRJVFkgZXBzaWxvbiAiJiM5
NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1MDsiPgotICAgPCFOT1RBVElPTiBub3RhdGlv
bjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24yIFNZU1RF
TSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJU1QgYWNyb255bSBkaXIgQ0RBVEEgImx0ciI+
Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbCB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz48dGl0bGU+aGNfc3Rh
ZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZ4aHRtbC5q
cyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
aGNfYXR0cmluc2VydGJlZm9yZTYuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+
ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48
Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgot
ICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9j
b2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+
Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4
NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25n
Pk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVu
Y2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24g
d2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2Vj
cmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgot
ICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7
Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxz
dHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8
L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFj
cm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1
MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5K
ZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgot
ICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRs
ZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1
NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+
Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+
Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRs
ZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgot
IDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU3LWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE2OTMxMDI5ZTcuLjAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVm
b3JlNy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3QJaHR0
cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5z
ZXJ0YmVmb3JlNwotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNy5qcyBiL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNy5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZjAxNDUwMjk1MDUuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNy5qcworKysgL2Rl
di9udWxsCkBAIC0xLDE2MCArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQg
V29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2Yg
VGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGlj
cyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZl
ZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExp
Y2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1b
MV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0
d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRl
bnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QK
LSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8v
d3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRi
ZWZvcmU3IjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVy
ID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3Rp
bmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8K
LS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9u
b3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0
aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9u
IGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkg
b2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRl
c3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBi
dWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLSAgICAgICBjaGVja0ZlYXR1cmUo
IlhNTCIsIG51bGwpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFy
IGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVk
JykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2Fk
ZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAg
ICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdj
b21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFs
aXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2Nv
bXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQg
b24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFy
dGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRl
ZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hh
bmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhl
Y3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9
PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQot
Ci0KLS8qKgotKiAKLUFwcGVuZHMgYSBkb2N1bWVudCBmcmFnbWVudCBjb250YWluaW5nIGEgQ0RB
VEFTZWN0aW9uIHRvIGFuIGF0dHJpYnV0ZS4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2
ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5
OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtOTUyMjgwNzI3Ci0q
LwotZnVuY3Rpb24gaGNfYXR0cmluc2VydGJlZm9yZTcoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAg
ICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRyaW5zZXJ0YmVmb3JlNyIp
ICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0Owot
ICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0
bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRlck5vZGU7Ci0gICAgICB2YXIg
ZGF5Tm9kZTsKLSAgICAgIHZhciBkb2NGcmFnOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZh
ciBmaXJzdENoaWxkOwotICAgICAgdmFyIGxhc3RDaGlsZDsKLSAgICAgIHZhciByZWZDaGlsZCA9
IG51bGw7Ci0KLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlw
ZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRv
YzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7
Ci0gICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIp
OwotICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRl
cyA9IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMu
Z2V0TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgdGVyTm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9k
ZSgidGVyIik7Ci0gICAgICAKLQlpZigKLQkKLQkoYnVpbGRlci5jb250ZW50VHlwZSA9PSAidGV4
dC9odG1sIikKLQotCSkgewotCQotCXsKLQkJc3VjY2VzcyA9IGZhbHNlOwotCQl0cnkgewotICAg
ICAgICAgICAgZGF5Tm9kZSA9IGRvYy5jcmVhdGVDREFUQVNlY3Rpb24oImRheSIpOwotICAgICAg
ICB9Ci0JCWNhdGNoKGV4KSB7Ci0gICAgICBzdWNjZXNzID0gKHR5cGVvZihleC5jb2RlKSAhPSAn
dW5kZWZpbmVkJyAmJiBleC5jb2RlID09IDkpOwotCQl9Ci0JCWFzc2VydFRydWUoInRocm93X05P
VF9TVVBQT1JURURfRVJSIixzdWNjZXNzKTsKLQl9Ci0KLQl9Ci0JCi0JCWVsc2UgewotCQkJZGF5
Tm9kZSA9IGRvYy5jcmVhdGVDREFUQVNlY3Rpb24oImRheSIpOwotICAgICAgZG9jRnJhZyA9IGRv
Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICByZXR2YWwgPSBkb2NGcmFnLmFwcGVu
ZENoaWxkKHRlck5vZGUpOwotICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGlsZChkYXlO
b2RlKTsKLSAgICAgIAotCXsKLQkJc3VjY2VzcyA9IGZhbHNlOwotCQl0cnkgewotICAgICAgICAg
ICAgcmV0dmFsID0gdGl0bGVBdHRyLmluc2VydEJlZm9yZShkb2NGcmFnLHJlZkNoaWxkKTsKLSAg
ICAgICAgfQotCQljYXRjaChleCkgewotICAgICAgc3VjY2VzcyA9ICh0eXBlb2YoZXguY29kZSkg
IT0gJ3VuZGVmaW5lZCcgJiYgZXguY29kZSA9PSAzKTsKLQkJfQotCQlhc3NlcnRUcnVlKCJ0aHJv
d19ISUVSQVJDSFlfUkVRVUVTVF9FUlIiLHN1Y2Nlc3MpOwotCX0KLQotCQl9Ci0JCi19Ci0KLQot
Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyaW5zZXJ0YmVmb3JlNygpOwotfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNl
cnRiZWZvcmU3LnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJpbnNlcnRiZWZvcmU3LnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTky
OGMwODVlYi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU3LnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAs
MCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZ
UEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAg
ICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8
IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8
IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0g
ICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJ
QyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0
aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwh
LS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRs
ZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2Ny
aXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJp
bnNlcnRiZWZvcmU3LmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9u
IGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25s
b2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9u
Zz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAg
ICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNy
b255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNy
b255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEg
UmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJl
ciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSBy
ZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwv
Y29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9u
eW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0
PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJv
Z2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgot
ICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9u
eW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29u
bm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45
NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIg
Y2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3Jv
bnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBN
eWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3Vw
PjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+
MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08
L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJsYXN0Y2hpbGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0Y2hpbGQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkYTQxYzI0ZDkxYi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0Y2hpbGQtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEv
RE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmxhc3RjaGlsZAotU3RhdHVzCVN1Y2Nl
c3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
bGFzdGNoaWxkLmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJs
YXN0Y2hpbGQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZjczNDI5Y2RlLi4w
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmxhc3RjaGlsZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0KLS8qCi1Db3B5
cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2Fj
aHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29y
dGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSku
IEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUg
aW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdh
bC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAg
ICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVy
aSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewot
ICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVs
MS9jb3JlL2hjX2F0dHJsYXN0Y2hpbGQiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAw
MDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhl
IHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNl
cHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0
ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUg
YW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBl
bnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7
Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAg
ICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9u
Ci0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0g
ICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0g
ICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NS
ZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NS
ZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQg
PT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAg
fQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxk
ZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19
Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24g
b2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMu
Ci0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29t
cGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3Mg
dGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBs
b2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNl
dFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUNoZWNr
cyB0aGF0IE5vZGUubGFzdENoaWxkIGZvciBhbiBhdHRyaWJ1dGUgbm9kZSBjb250YWlucwotdGhl
IGV4cGVjdGVkIHRleHQgbm9kZS4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25l
LWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMt
RE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjFBRDA5RkIKLSovCi1mdW5j
dGlvbiBoY19hdHRybGFzdGNoaWxkKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJ
bml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cmxhc3RjaGlsZCIpICE9IG51bGwpIHJldHVy
bjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3RO
b2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAg
dmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIG90aGVyQ2hpbGQ7Ci0g
ICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRv
YykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9
Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNy
b255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRl
c3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9k
ZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRl
bSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7Ci0KLSAg
ICAgIGFzc2VydE5vdE51bGwoInRleHROb2RlTm90TnVsbCIsdGV4dE5vZGUpOwotdmFsdWUgPSB0
ZXh0Tm9kZS5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiY2hpbGQxSXNZZXMiLCJZ
ZXMiLHZhbHVlKTsKLSAgICAgICBvdGhlckNoaWxkID0gdGV4dE5vZGUubmV4dFNpYmxpbmc7Ci0K
LSAgICAgIGFzc2VydE51bGwoIm5leHRTaWJsaW5nSXNOdWxsIixvdGhlckNoaWxkKTsKLSAgICBv
dGhlckNoaWxkID0gdGV4dE5vZGUucHJldmlvdXNTaWJsaW5nOwotCi0gICAgICBhc3NlcnROdWxs
KCJwcmV2aW91c1NpYmxpbmdJc051bGwiLG90aGVyQ2hpbGQpOwotICAgIAotfQotCi0KLQotCi1m
dW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmxhc3RjaGlsZCgpOwotfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0Y2hpbGQueGh0
bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmxhc3RjaGlsZC54
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFkNDJkOGJhOGEuLjAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNo
aWxkLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0i
MS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICIt
Ly9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIg
WwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0Njsi
PgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7
Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5
NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0g
ICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRM
SVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51
bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxo
ZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJsYXN0Y2hpbGQuanMiLz48c2NyaXB0
IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRl
c3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8
cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25n
PgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9z
dXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9y
dGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVt
PkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNl
Y3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBh
biBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3Rh
Yjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3Vw
PgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVz
Ij4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgot
ICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8
Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8
dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBC
b3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5F
TVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVy
c29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRo
IFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNv
bXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5n
IFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1h
bGl6ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZjg1YjUx
ZGM2Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cm5vcm1hbGl6ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLVRlc3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29y
ZS9oY19hdHRybm9ybWFsaXplCi1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3JtYWxpemUuanMgYi9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6ZS5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDlmNWUyOTYyYjYuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybm9ybWFsaXplLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3Js
ZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNo
bm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFu
ZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBU
aGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5z
ZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBo
dHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJl
LTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlm
aWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAg
ICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cu
dzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6ZSI7
Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7
Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1l
d29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElm
IHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8g
ICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1
cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1l
ZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0
ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdy
dW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3Vt
ZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9
IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAg
ICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2Mp
ICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQot
ICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwot
ICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQ
YWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAg
IAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBh
Z2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0
aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJv
bm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3lu
Y2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdl
IHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUg
dGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAo
Kytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRl
JzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQXBwZW5kcyBhIHRleHQgbm9kZSB0byBhbiBhdHRy
aWJ1dGUsIG5vcm1hbGl6ZXMgdGhlIGF0dHJpYnV0ZQotYW5kIGNoZWNrcyBmb3IgYSBzaW5nbGUg
Y2hpbGQgbm9kZS4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53
My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQt
NjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVs
LTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTYyQ0YwODMKLSovCi1mdW5jdGlvbiBoY19h
dHRybm9ybWFsaXplKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXph
dGlvbihidWlsZGVyLCAiaGNfYXR0cm5vcm1hbGl6ZSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2
YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAg
ICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVl
OwotICAgICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBmaXJz
dENoaWxkOwotICAgICAgdmFyIHNlY29uZENoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVm
ID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0g
ICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NS
ZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0
ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAg
dGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXh0
Tm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgidGVyZGF5Iik7Ci0gICAgICByZXR2YWwgPSB0aXRs
ZUF0dHIuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOwotICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRl
VGV4dE5vZGUoIiIpOwotICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmFwcGVuZENoaWxkKHRleHRO
b2RlKTsKLSAgICAgIHRlc3ROb2RlLm5vcm1hbGl6ZSgpOwotICAgICAgdmFsdWUgPSB0aXRsZUF0
dHIubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJZZXN0
ZXJkYXkiLHZhbHVlKTsKLSAgICAgICBmaXJzdENoaWxkID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7
Ci0KLSAgICAgIHZhbHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVx
dWFscygiZmlyc3RDaGlsZFZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgc2Vjb25k
Q2hpbGQgPSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOwotCi0gICAgICBhc3NlcnROdWxsKCJzZWNv
bmRDaGlsZElzTnVsbCIsc2Vjb25kQ2hpbGQpOwotICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBy
dW5UZXN0KCkgewotICAgaGNfYXR0cm5vcm1hbGl6ZSgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3JtYWxpemUueGh0bWwgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6ZS54aHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg4YzJkMmM3ZTguLjAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybm9ybWFsaXplLnhodG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9U
RVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RU
RCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFF
TlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFF
TlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwh
RU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAg
IDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFU
SU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFjcm9u
eW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0t
PgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVU
Ri04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJub3JtYWxpemUuanMiLz48c2NyaXB0IHR5cGU9J3Rl
eHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwv
c2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVt
PkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29k
ZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2
YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBE
YWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8
L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0
aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2Vu
dCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9u
Zz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFy
PkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsg
RGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1Q
MDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBh
cnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0
YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2
aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9l
bT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERp
cmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgot
ICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERh
bGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwv
ZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNw
ZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgot
ICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4
NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxk
MS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmNDI2ZjY3ZTEw
Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cnJlbW92ZWNoaWxkMS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLVRlc3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29y
ZS9oY19hdHRycmVtb3ZlY2hpbGQxCi1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZW1vdmVjaGlsZDEuanMgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMS5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY5ODc0NmE2OWYuLjAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVtb3ZlY2hpbGQxLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIw
MDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3Rp
dHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIElu
Zm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRz
IFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29m
dHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJp
Z2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkg
dGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIg
b2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4g
Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0
cnJlbW92ZWNoaWxkMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIg
YnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRo
ZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0
ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFz
eW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVy
d2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4
Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRo
ZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVw
UGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3Jl
YXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8K
LSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NM
b2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0
eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMu
ZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIs
ICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0g
ICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBj
YXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwot
ICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8v
Ci0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAg
ICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAg
IFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0v
LyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAg
ICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0
ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotUmVtb3ZlcyB0aGUgY2hp
bGQgbm9kZSBvZiBhbiBhdHRyaWJ1dGUgYW5kIGNoZWNrcyB0aGF0IHRoZSB2YWx1ZSBpcyBlbXB0
eS4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIv
MTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0
Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEw
MDEvbGV2ZWwtb25lLWNvcmUjSUQtMTczNDgzNDA2NgotKi8KLWZ1bmN0aW9uIGhjX2F0dHJyZW1v
dmVjaGlsZDEoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9u
KGJ1aWxkZXIsICJoY19hdHRycmVtb3ZlY2hpbGQxIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZh
ciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAg
ICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7
Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0
Q2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVv
Zih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7
Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwot
ICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsK
LSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMg
PSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdl
dE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gdGl0bGVBdHRyLmZpcnN0Q2hp
bGQ7Ci0KLSAgICAgIGFzc2VydE5vdE51bGwoImF0dHJDaGlsZE5vdE51bGwiLHRleHROb2RlKTsK
LXJldHZhbCA9IHRpdGxlQXR0ci5yZW1vdmVDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICB2YWx1ZSA9
IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCIiLHZh
bHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2Vy
dEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIiIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gcmV0dmFs
Lm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJyZXR2YWxWYWx1ZSIsIlllcyIsdmFs
dWUpOwotICAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAg
YXNzZXJ0TnVsbCgiZmlyc3RDaGlsZE51bGwiLGZpcnN0Q2hpbGQpOwotICAgIAotfQotCi0KLQot
Ci1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cnJlbW92ZWNoaWxkMSgpOwotfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZW1vdmVj
aGlsZDEueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJl
bW92ZWNoaWxkMS54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVhYWZjNTQ4
NWEuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRycmVtb3ZlY2hpbGQxLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAot
PD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRt
bAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRt
bDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElU
WSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElU
WSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVO
VElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90
YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZp
bGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhp
cyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBj
aGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJyZW1vdmVj
aGlsZDEuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENv
bXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9Imxv
YWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdh
cmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAg
Ci0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xk
c1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFt
cDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5j
ZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgot
ICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRs
ZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9u
eW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBK
b25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+
MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8
L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0
cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwv
c3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0i
WSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9z
dHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAw
PC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5v
cmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cnJlcGxhY2VjaGlsZDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQxLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzYxN2JmNjNjODYuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMS1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3QJaHR0cDovL3d3dy53My5vcmcv
MjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMQotU3Rh
dHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRycmVwbGFjZWNoaWxkMS5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEv
Y29yZS9oY19hdHRycmVwbGFjZWNoaWxkMS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmY0OTllNWQzMGUuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMS5qcworKysgL2Rldi9udWxsCkBAIC0xLDEz
NSArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIg
Q29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVy
b3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRp
Y3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlz
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRo
ZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53
My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQot
Ki8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVz
dC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rp
b24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAx
L0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQxIjsKLSAgIH0K
LQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8K
LS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJl
Zm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUg
YXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAg
ZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAg
ICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5
Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0v
LwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcn
OwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVp
bGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3JlYXRl
Q29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAg
ICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3Vu
ZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBk
b2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAg
IAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0
dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNo
SW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1
cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMg
Y2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxv
YWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91
cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVz
IGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRv
IGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NM
b2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAg
IH0KLX0KLQotCi0vKioKLSogCi1SZXBsYWNlcyBhIHRleHQgbm9kZSBvZiBhbiBhdHRyaWJ1dGUg
YW5kIGNoZWNrcyBpZiB0aGUgdmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLQot
KiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9S
RUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2
ZWwtb25lLWNvcmUjSUQtNzg1ODg3MzA3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cnJlcGxhY2VjaGls
ZDEoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxk
ZXIsICJoY19hdHRycmVwbGFjZWNoaWxkMSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9j
OwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFy
IGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAg
ICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBmaXJzdENoaWxk
OwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhp
cy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAg
ICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAg
IGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAg
ICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVz
dE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1l
ZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgidGVy
ZGF5Iik7Ci0gICAgICBmaXJzdENoaWxkID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAg
IGFzc2VydE5vdE51bGwoImF0dHJDaGlsZE5vdE51bGwiLGZpcnN0Q2hpbGQpOwotcmV0dmFsID0g
dGl0bGVBdHRyLnJlcGxhY2VDaGlsZCh0ZXh0Tm9kZSxmaXJzdENoaWxkKTsKLSAgICAgIHZhbHVl
ID0gdGl0bGVBdHRyLnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1ZSIsInRl
cmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAg
ICAgYXNzZXJ0RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwidGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAg
dmFsdWUgPSByZXR2YWwubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoInJldHZhbFZh
bHVlIiwiWWVzIix2YWx1ZSk7Ci0gICAgICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5maXJzdENo
aWxkOwotCi0gICAgICB2YWx1ZSA9IGZpcnN0Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBhc3Nl
cnRFcXVhbHMoImZpcnN0Q2hpbGRWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIAotfQot
Ci0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cnJlcGxhY2VjaGlsZDEoKTsK
LX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
cmVwbGFjZWNoaWxkMS54aHRtbCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRycmVwbGFjZWNoaWxkMS54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODZiNWE4ODZiODguLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMS54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYw
ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/PgotPCFE
T0NUWVBFIGh0bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4i
Ci0gICAieGh0bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsiPgot
ICAgPCFFTlRJVFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0NzsiPgot
ICAgPCFFTlRJVFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0OTsi
PgotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQ
VUJMSUMgIm5vdGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVNICJu
b3RhdGlvbjJGaWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRyIj4KLV0+
Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwv
dGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+
PHNjcmlwdCAgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19h
dHRycmVwbGFjZWNoaWxkMS5qcyIvPjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5j
dGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5
IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxz
dHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+
ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAg
PGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1NTE8
L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFy
dGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBu
dW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRo
IGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgotICA8Y29kZT5TZWNyZXRh
cnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5
ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9u
Zz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29k
ZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwvdmFyPgotICA8YWNyb255
bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4NTUzPC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25nPkplbnkg
T2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxz
dXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZ
ZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1Njwv
YWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2Jl
cnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAg
PHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZ
ZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9w
PgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9k
b20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDItZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2ZhZTU1NjY4OC4uMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQy
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8v
d3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNl
Y2hpbGQyCi1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQyLmpzIGIvTGF5b3V0VGVzdHMvZG9tL3ho
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQyLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjMjZkMzE2ZDJmYS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQyLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3Js
ZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNo
bm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFu
ZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBU
aGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5z
ZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBo
dHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJl
LTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlm
aWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAg
ICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cu
dzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGls
ZDIiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBu
dWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBm
cmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8g
ICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMK
LS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBz
dGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMg
aW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0
aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMg
PSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBk
b2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxk
ZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsK
LSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMu
ZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAg
IH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYi
KTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNl
dFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsK
LSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0
VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlz
IG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5
Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5
IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUg
cGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2Yg
dGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAg
aWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21w
bGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLVJlcGxhY2VzIGEgdGV4dCBub2RlIG9mIGFu
IGF0dHJpYnV0ZSB3aXRoIGEgZG9jdW1lbnQgZnJhZ21lbnQgYW5kIGNoZWNrcyBpZiB0aGUgdmFs
dWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xk
Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEw
MDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcv
VFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNzg1ODg3
MzA3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cnJlcGxhY2VjaGlsZDIoKSB7Ci0gICB2YXIgc3VjY2Vz
czsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRycmVwbGFjZWNo
aWxkMiIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1M
aXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2
YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRlck5vZGU7Ci0gICAg
ICB2YXIgZGF5Tm9kZTsKLSAgICAgIHZhciBkb2NGcmFnOwotICAgICAgdmFyIHJldHZhbDsKLSAg
ICAgIHZhciBmaXJzdENoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAg
ICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1Jl
ZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAi
aGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAg
ICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0g
YXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXJOb2RlID0gZG9jLmNy
ZWF0ZVRleHROb2RlKCJ0ZXIiKTsKLSAgICAgIGRheU5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUo
ImRheSIpOwotICAgICAgZG9jRnJhZyA9IGRvYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0g
ICAgICByZXR2YWwgPSBkb2NGcmFnLmFwcGVuZENoaWxkKHRlck5vZGUpOwotICAgICAgcmV0dmFs
ID0gZG9jRnJhZy5hcHBlbmRDaGlsZChkYXlOb2RlKTsKLSAgICAgIGZpcnN0Q2hpbGQgPSB0aXRs
ZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgYXNzZXJ0Tm90TnVsbCgiYXR0ckNoaWxkTm90TnVs
bCIsZmlyc3RDaGlsZCk7Ci1yZXR2YWwgPSB0aXRsZUF0dHIucmVwbGFjZUNoaWxkKGRvY0ZyYWcs
Zmlyc3RDaGlsZCk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNz
ZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJ0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRp
dGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIs
InRlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAg
ICAgYXNzZXJ0RXF1YWxzKCJyZXR2YWxWYWx1ZSIsIlllcyIsdmFsdWUpOwotICAgICAgIGZpcnN0
Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBmaXJzdENoaWxk
Lm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJzdENoaWxkVmFsdWUiLCJ0ZXIi
LHZhbHVlKTsKLSAgICAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhj
X2F0dHJyZXBsYWNlY2hpbGQyKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDIueGh0bWwgYi9MYXlvdXRUZXN0cy9k
b20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDIueGh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYTM0MjQxMWQ4Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDIueGh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz48P1RF
U1QtU1RZTEUgUElEQVRBPz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0vL1czQy8vRFRE
IFhIVE1MIDEuMCBTdHJpY3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBbCi0gICA8IUVO
VElUWSBhbHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+Ci0gICA8IUVO
VElUWSBnYW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsiPgotICAgPCFF
TlRJVFkgZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1MDsiPgotICAg
PCFOT1RBVElPTiBub3RhdGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAgIDwhTk9UQVRJ
T04gbm90YXRpb24yIFNZU1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJU1QgYWNyb255
bSBkaXIgQ0RBVEEgImx0ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+
Ci08aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhlYWQ+PG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRG
LTgiLz48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cnJlcGxhY2VjaGlsZDIuanMiLz48c2NyaXB0IHR5cGU9
J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsg
fTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAg
PGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8
Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0g
IDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZl
LiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAw
MDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24g
d2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGph
Y2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0
cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8
dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0
YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5E
ZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZk
ZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcg
SXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0
PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVs
IERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQu
IERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAw
NTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVy
IFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFz
IDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NjliNDMyYzBhLi4w
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cnNldHZhbHVlMS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRl
c3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19h
dHRyc2V0dmFsdWUxCi1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9t
L3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTEuanMgYi9MYXlvdXRUZXN0cy9kb20v
eGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMS5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDU3ZjdiNmQ4YmEuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUxLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMTM1ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRl
IFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5
LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRo
ZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdv
cmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0g
aW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8v
d3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIx
MjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRo
ZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1m
dW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3Jn
LzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMSI7Ci0gICB9
Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8v
Ci0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBi
ZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJl
IGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAg
IGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8g
ICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVs
eQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0Lgot
Ly8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5n
JzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1
aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0
ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0g
ICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1
bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAg
ZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAg
ICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRj
aEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0
dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlz
IGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBs
b2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25v
dXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1
cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0
byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2Nz
TG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAg
ICB9Ci19Ci0KLQotLyoqCi0qIAotU2V0cyBBdHRyLnZhbHVlIG9uIGFuIGF0dHJpYnV0ZSB0aGF0
IG9ubHkgaGFzIGEgc2ltcGxlIHZhbHVlLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNl
ZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZl
bC1vbmUtY29yZSNJRC0yMjE2NjI0NzQKLSovCi1mdW5jdGlvbiBoY19hdHRyc2V0dmFsdWUxKCkg
ewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAi
aGNfYXR0cnNldHZhbHVlMSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAg
dmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0
ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHJl
dHZhbDsKLSAgICAgIHZhciBmaXJzdENoaWxkOwotICAgICAgdmFyIG90aGVyQ2hpbGQ7Ci0gICAg
ICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykg
IT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0g
ICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255
bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3RO
b2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5h
dHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgi
dGl0bGUiKTsKLSAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAg
ICAgYXNzZXJ0Tm90TnVsbCgiYXR0ckNoaWxkTm90TnVsbCIsZmlyc3RDaGlsZCk7Ci10aXRsZUF0
dHIudmFsdWUgPSAiVG9tb3Jyb3ciOwotCi0gICAgICBmaXJzdENoaWxkLm5vZGVWYWx1ZSA9ICJp
bXBsIHJldXNlZCBub2RlIjsKLQotICAgICAgdmFsdWUgPSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAg
ICAgIGFzc2VydEVxdWFscygiYXR0clZhbHVlIiwiVG9tb3Jyb3ciLHZhbHVlKTsKLSAgICAgICB2
YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5v
ZGVWYWx1ZSIsIlRvbW9ycm93Iix2YWx1ZSk7Ci0gICAgICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0
ci5sYXN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAg
ICAgIGFzc2VydEVxdWFscygiZmlyc3RDaGlsZFZhbHVlIiwiVG9tb3Jyb3ciLHZhbHVlKTsKLSAg
ICAgICBvdGhlckNoaWxkID0gZmlyc3RDaGlsZC5uZXh0U2libGluZzsKLQotICAgICAgYXNzZXJ0
TnVsbCgibmV4dFNpYmxpbmdJc051bGwiLG90aGVyQ2hpbGQpOwotICAgIAotfQotCi0KLQotCi1m
dW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cnNldHZhbHVlMSgpOwotfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTEueGh0
bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMS54
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI0OWVkNDVhODEuLjAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFs
dWUxLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0i
MS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICIt
Ly9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIg
WwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0Njsi
PgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7
Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5
NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0g
ICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRM
SVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51
bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxo
ZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJzZXR2YWx1ZTEuanMiLz48c2NyaXB0
IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRl
c3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8
cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25n
PgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9z
dXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9y
dGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVt
PkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNl
Y3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBh
biBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3Rh
Yjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3Vw
PgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVz
Ij4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgot
ICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8
Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8
dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBC
b3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5F
TVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVy
c29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRo
IFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNv
bXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5n
IFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZh
bHVlMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5OWY2NGU5
ZmI5Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cnNldHZhbHVlMi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLVRlc3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29y
ZS9oY19hdHRyc2V0dmFsdWUyCi1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTIuanMgYi9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMi5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDI5ZDdkNWIxYzkuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUyLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsMTM4ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3Js
ZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNo
bm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFu
ZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBU
aGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5z
ZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBo
dHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJl
LTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlm
aWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAg
ICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cu
dzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMiI7
Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7
Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1l
d29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElm
IHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8g
ICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1
cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1l
ZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0
ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdy
dW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3Vt
ZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9
IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAg
ICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2Mp
ICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQot
ICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwot
ICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQ
YWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAg
IAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBh
Z2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0
aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJv
bm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3lu
Y2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdl
IHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUg
dGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAo
Kytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRl
JzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotU2V0cyBBdHRyLnZhbHVlIG9uIGFuIGF0dHJpYnV0
ZSB0aGF0IHNob3VsZCBjb250YWluIG11bHRpcGxlIGNoaWxkIG5vZGVzLgotCi0qIEBhdXRob3Ig
Q3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2
ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0yMjE2NjI0NzQKLSovCi1mdW5jdGlvbiBo
Y19hdHRyc2V0dmFsdWUyKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFs
aXphdGlvbihidWlsZGVyLCAiaGNfYXR0cnNldHZhbHVlMiIpICE9IG51bGwpIHJldHVybjsKLSAg
ICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwot
ICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZh
bHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBm
aXJzdENoaWxkOwotICAgICAgdmFyIG90aGVyQ2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NS
ZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsK
LSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRv
Y1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3Qu
aXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAg
ICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRl
eHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIHJldHZhbCA9IHRp
dGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICBmaXJzdENoaWxkID0gdGl0bGVB
dHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAgIGFzc2VydE5vdE51bGwoImF0dHJDaGlsZE5vdE51bGwi
LGZpcnN0Q2hpbGQpOwotdGl0bGVBdHRyLnZhbHVlID0gIlRvbW9ycm93IjsKLQotICAgICAgZmly
c3RDaGlsZC5ub2RlVmFsdWUgPSAiaW1wbCByZXVzZWQgbm9kZSI7Ci0KLSAgICAgIHZhbHVlID0g
dGl0bGVBdHRyLnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1ZSIsIlRvbW9y
cm93Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSB0aXRsZUF0dHIubm9kZVZhbHVlOwotCi0gICAg
ICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJUb21vcnJvdyIsdmFsdWUpOwotICAgICAg
IGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIubGFzdENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGZpcnN0
Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImZpcnN0Q2hpbGRWYWx1ZSIs
IlRvbW9ycm93Iix2YWx1ZSk7Ci0gICAgICAgb3RoZXJDaGlsZCA9IGZpcnN0Q2hpbGQubmV4dFNp
Ymxpbmc7Ci0KLSAgICAgIGFzc2VydE51bGwoIm5leHRTaWJsaW5nSXNOdWxsIixvdGhlckNoaWxk
KTsKLSAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJzZXR2
YWx1ZTIoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRyc2V0dmFsdWUyLnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJzZXR2YWx1ZTIueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJhZGZjY2RjZmNmLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMi54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwICsw
LDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/PgotPCFET0NU
WVBFIGh0bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCi0g
ICAieGh0bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsiPgotICAg
PCFFTlRJVFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0NzsiPgotICAg
PCFFTlRJVFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0OTsiPgot
ICAgPCFFTlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQVUJM
SUMgIm5vdGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVNICJub3Rh
dGlvbjJGaWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRyIj4KLV0+Ci08
IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwvdGl0
bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+PHNj
cmlwdCAgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRy
c2V0dmFsdWUyLmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxv
YWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2Fk
PSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5N
YXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAg
ICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255
bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255
bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5
bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAy
ICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZl
cmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29k
ZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2Vy
Ci0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8
c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxl
PSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+
Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9y
PC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSww
MDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xh
c3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3Jvbnlt
PgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVy
czwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkw
LDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgy
MSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2Jv
ZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3Jl
L2hjX2VsZW1lbnRub3JtYWxpemUyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRt
bC9sZXZlbDEvY29yZS9oY19lbGVtZW50bm9ybWFsaXplMi1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMmY5OWQ2MTBjLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6ZTItZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMu
b3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6ZTIK
LVN0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwx
L2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6ZTIuanMgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2
ZWwxL2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6ZTIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGIyMTk3ZWQ1YTFkLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6ZTIuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwxMjkgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUg
V2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ks
IEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhl
bWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29y
ayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBp
biB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93
d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEy
MzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhl
IHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1
bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcv
MjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19lbGVtZW50bm9ybWFsaXplMiI7Ci0g
ICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0K
LS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29y
ayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRo
ZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAg
ICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwot
Ly8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlh
dGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0
LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5u
aW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50
IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNy
ZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAg
Ci0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9
ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAg
ICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAg
ICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdl
U3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAlj
YXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VT
dGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9k
IGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91
cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hy
b25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0
YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVz
dCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytk
b2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsK
LSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQWRkIGFuIGVtcHR5IHRleHQgbm9kZSB0byBhbiBleGlz
dGluZyBhdHRyaWJ1dGUgbm9kZSwgbm9ybWFsaXplIHRoZSBjb250YWluaW5nIGVsZW1lbnQKLWFu
ZCBjaGVjayB0aGF0IHRoZSBhdHRyaWJ1dGUgbm9kZSBoYXMgZWxpbWluYXRlZCB0aGUgZW1wdHkg
dGV4dC4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcv
VFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTYyQ0Yw
ODMKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9
NDgyCi0qLwotZnVuY3Rpb24gaGNfZWxlbWVudG5vcm1hbGl6ZTIoKSB7Ci0gICB2YXIgc3VjY2Vz
czsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19lbGVtZW50bm9ybWFs
aXplMiIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIHJvb3Q7Ci0g
ICAgICB2YXIgZWxlbWVudExpc3Q7Ci0gICAgICB2YXIgZWxlbWVudDsKLSAgICAgIHZhciBmaXJz
dENoaWxkOwotICAgICAgdmFyIHNlY29uZENoaWxkOwotICAgICAgdmFyIGNoaWxkVmFsdWU7Ci0g
ICAgICB2YXIgZW1wdHlUZXh0OwotICAgICAgdmFyIGF0dHJOb2RlOwotICAgICAgdmFyIHJldHZh
bDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRo
aXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAg
ICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAg
ICByb290ID0gZG9jLmRvY3VtZW50RWxlbWVudDsKLQotICAgICAgZW1wdHlUZXh0ID0gZG9jLmNy
ZWF0ZVRleHROb2RlKCIiKTsKLSAgICAgIGVsZW1lbnRMaXN0ID0gcm9vdC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgZWxlbWVudCA9IGVsZW1lbnRMaXN0Lml0ZW0oMCk7
Ci0gICAgICBhdHRyTm9kZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgidGl0bGUiKTsKLSAg
ICAgIHJldHZhbCA9IGF0dHJOb2RlLmFwcGVuZENoaWxkKGVtcHR5VGV4dCk7Ci0gICAgICBlbGVt
ZW50Lm5vcm1hbGl6ZSgpOwotICAgICAgYXR0ck5vZGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5v
ZGUoInRpdGxlIik7Ci0gICAgICBmaXJzdENoaWxkID0gYXR0ck5vZGUuZmlyc3RDaGlsZDsKLQot
ICAgICAgY2hpbGRWYWx1ZSA9IGZpcnN0Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRF
cXVhbHMoImZpcnN0Q2hpbGQiLCJZZXMiLGNoaWxkVmFsdWUpOwotICAgICAgIHNlY29uZENoaWxk
ID0gZmlyc3RDaGlsZC5uZXh0U2libGluZzsKLQotICAgICAgYXNzZXJ0TnVsbCgic2Vjb25kQ2hp
bGROdWxsIixzZWNvbmRDaGlsZCk7Ci0gICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3Qo
KSB7Ci0gICBoY19lbGVtZW50bm9ybWFsaXplMigpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRub3JtYWxpemUyLnhodG1sIGIvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRub3JtYWxpemUyLnhodG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzJkZDU2MDI3MC4uMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRub3JtYWxp
emUyLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0i
MS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICIt
Ly9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIg
WwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0Njsi
PgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7
Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5
NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0g
ICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRM
SVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51
bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxo
ZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2VsZW1lbnRub3JtYWxpemUyLmpzIi8+PHNj
cmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3Rh
cnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+
Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0
cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAw
MDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMw
IE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RB
VEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMg
aXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFt
cDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8
L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8
cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4K
LSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4K
LSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+
UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8
ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2Rl
PlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5G
ZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBT
b3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAg
PGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29k
ZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFy
Pm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIEly
dmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2Rl
MDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3Vt
ZW50YWRvcHRub2RlMDEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5NGI0MDBkMTY4MS4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2RlMDEtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3Vp
dGUvbGV2ZWwzL2NvcmUvZG9jdW1lbnRhZG9wdG5vZGUwMQotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudGFkb3B0bm9k
ZTAxLmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50YWRvcHRu
b2RlMDEuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZjFiNzY0YjI0Li4wMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRh
ZG9wdG5vZGUwMS5qcworKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0KLS8qCi1Db3B5
cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2Fj
aHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29y
dGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSku
IEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUg
aW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdh
bC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAg
ICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVy
aSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewot
ICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVs
My9jb3JlL2RvY3VtZW50YWRvcHRub2RlMDEiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0x
MDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcg
dGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBl
eGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0
YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxl
dGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hl
biBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2Uo
KSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwot
ICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0
aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwot
Ci0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7
Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBk
b2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChk
b2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2Fk
ZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAg
ICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1
aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9
Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRp
b24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVz
dHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMg
Y29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxv
d3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlv
biBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAg
IHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLQlB
ZG9wdCB0aGUgY2xhc3MgYXR0cmlidXRlIG5vZGUgb2YgdGhlIGZvdXJ0aCBhY3JvbnltIGVsZW1l
bnQuICBDaGVjayBpZiB0aGlzIGF0dHJpYnV0ZSBoYXMgYmVlbiBhZG9wdGVkIHN1Y2Nlc3NmdWxs
eSBieSB2ZXJpZnlpbmcgdGhlCi0Jbm9kZU5hbWUsIG5vZGVUeXBlLCBub2RlVmFsdWUsIHNwZWNp
ZmllZCBhbmQgb3duZXJFbGVtZW50IGF0dHJpYnV0ZXMgb2YgdGhlIGFkb3B0ZWQgbm9kZS4KLQot
KiBAYXV0aG9yIElCTQotKiBAYXV0aG9yIE5laWwgRGVsaW1hCi0qIEBzZWUgaHR0cDovL3d3dy53
My5vcmcvVFIvMjAwNC9SRUMtRE9NLUxldmVsLTMtQ29yZS0yMDA0MDQwNy9jb3JlI0RvY3VtZW50
My1hZG9wdE5vZGUKLSovCi1mdW5jdGlvbiBkb2N1bWVudGFkb3B0bm9kZTAxKCkgewotICAgdmFy
IHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiZG9jdW1lbnRh
ZG9wdG5vZGUwMSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGF0
dHJPd25lckVsZW07Ci0gICAgICB2YXIgZWxlbWVudDsKLSAgICAgIHZhciBhdHRyOwotICAgICAg
dmFyIGNoaWxkTGlzdDsKLSAgICAgIHZhciBhZG9wdGVkY2xhc3M7Ci0gICAgICB2YXIgYXR0cnNQ
YXJlbnQ7Ci0gICAgICB2YXIgbm9kZU5hbWU7Ci0gICAgICB2YXIgbm9kZVR5cGU7Ci0gICAgICB2
YXIgbm9kZVZhbHVlOwotICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIgZmlyc3RDaGls
ZFZhbHVlOwotICAgICAgdmFyIHNlY29uZENoaWxkOwotICAgICAgdmFyIHNlY29uZENoaWxkVHlw
ZTsKLSAgICAgIHZhciBzZWNvbmRDaGlsZE5hbWU7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYg
PSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAg
ICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1Jl
ZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgY2hpbGRMaXN0ID0gZG9jLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICBlbGVtZW50ID0gY2hpbGRMaXN0Lml0ZW0oMyk7
Ci0gICAgICBhdHRyID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCJjbGFzcyIpOwotICAgICAg
YWRvcHRlZGNsYXNzID0gZG9jLmFkb3B0Tm9kZShhdHRyKTsKLSAgICAgIAotCWlmKAotCQotCShh
ZG9wdGVkY2xhc3MgIT0gbnVsbCkKLQotCSkgewotCW5vZGVOYW1lID0gYWRvcHRlZGNsYXNzLm5v
ZGVOYW1lOwotCi0gICAgICBub2RlVmFsdWUgPSBhZG9wdGVkY2xhc3Mubm9kZVZhbHVlOwotCi0g
ICAgICBub2RlVHlwZSA9IGFkb3B0ZWRjbGFzcy5ub2RlVHlwZTsKLQotICAgICAgYXR0ck93bmVy
RWxlbSA9IGFkb3B0ZWRjbGFzcy5vd25lckVsZW1lbnQ7Ci0KLSAgICAgIGFzc2VydEVxdWFscygi
ZG9jdW1lbnRhZG9wdG9kZTAxX25vZGVOYW1lIiwiY2xhc3MiLG5vZGVOYW1lKTsKLSAgICAgICBh
c3NlcnRFcXVhbHMoImRvY3VtZW50YWRvcHROb2RlMDFfbm9kZVR5cGUiLDIsbm9kZVR5cGUpOwot
ICAgICAgIGFzc2VydE51bGwoImRvY3VtZW50YWRvcHRub2RlMDFfb3duZXJEb2MiLGF0dHJPd25l
ckVsZW0pOwotICAgIGZpcnN0Q2hpbGQgPSBhZG9wdGVkY2xhc3MuZmlyc3RDaGlsZDsKLQotICAg
ICAgYXNzZXJ0Tm90TnVsbCgiZmlyc3RDaGlsZE5vdE51bGwiLGZpcnN0Q2hpbGQpOwotZmlyc3RD
aGlsZFZhbHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIAotCWlmKAotCSgiWSIg
PT0gZmlyc3RDaGlsZFZhbHVlKQotCSkgewotCXNlY29uZENoaWxkID0gZmlyc3RDaGlsZC5uZXh0
U2libGluZzsKLQotICAgICAgYXNzZXJ0Tm90TnVsbCgic2Vjb25kQ2hpbGROb3ROdWxsIixzZWNv
bmRDaGlsZCk7Ci1zZWNvbmRDaGlsZFR5cGUgPSBzZWNvbmRDaGlsZC5ub2RlVHlwZTsKLQotICAg
ICAgYXNzZXJ0RXF1YWxzKCJzZWNvbmRDaGlsZElzRW50aXR5UmVmZXJlbmNlIiw1LHNlY29uZENo
aWxkVHlwZSk7Ci0gICAgICAgc2Vjb25kQ2hpbGROYW1lID0gc2Vjb25kQ2hpbGQubm9kZU5hbWU7
Ci0KLSAgICAgIGFzc2VydEVxdWFscygic2Vjb25kQ2hpbGRJc0VudDFSZWZlcmVuY2UiLCJhbHBo
YSIsc2Vjb25kQ2hpbGROYW1lKTsKLSAgICAgICAKLQl9Ci0JCi0JCWVsc2UgewotCQkJYXNzZXJ0
RXF1YWxzKCJkb2N1bWVudGFkb3B0bm9kZTAxX25vZGVWYWx1ZSIsIlnOsSIsbm9kZVZhbHVlKTsK
LSAgICAgICAKLQkJfQotCQotCX0KLQkKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsK
LSAgIGRvY3VtZW50YWRvcHRub2RlMDEoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudGFkb3B0bm9kZTAxLnhodG1sIGIvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2RlMDEueGh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlMzhiZGE3ZDdlLi4wMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRhZG9wdG5vZGUwMS54aHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/
VEVTVC1TVFlMRSBQSURBVEE/PgotPCFET0NUWVBFIGh0bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9E
VEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCi0gICAieGh0bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwh
RU5USVRZIGFscGhhICImIzk0NTsiPgotICAgPCFFTlRJVFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwh
RU5USVRZIGdhbW1hICImIzk0NzsiPgotICAgPCFFTlRJVFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8
IUVOVElUWSBlcHNpbG9uICImIzk0OTsiPgotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0g
ICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQVUJMSUMgIm5vdGF0aW9uMUZpbGUiPgotICAgPCFOT1RB
VElPTiBub3RhdGlvbjIgU1lTVEVNICJub3RhdGlvbjJGaWxlIj4KLSAgIDwhQVRUTElTVCBwCi0g
ICAgICAgIGRpciBDREFUQSAncnRsJwotICAgICAgICB4bWxuczpkbXN0YyBDREFUQSAjSU1QTElF
RAotICAgICAgICB4bWxuczpubSBDREFUQSAjSU1QTElFRAotICAgICAgICB4bWxuczplbXAyIENE
QVRBICNJTVBMSUVEPgotICAgPCFBVFRMSVNUIGh0bWwKLSAgICAgICAgICAgICAgICAgICB4bWxu
czp4c2kgQ0RBVEEgI0lNUExJRUQKLSAgICAgICAgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRp
b24gQ0RBVEEgI0lNUExJRUQ+Ci0gICA8IUFUVExJU1QgYWNyb255bSB4c2k6bm9OYW1lc3BhY2VT
Y2hlbWFMb2NhdGlvbiBDREFUQSAjSU1QTElFRD4KLSAgIDwhRU5USVRZIGVudDQgIjxzcGFuIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz5FbGVtZW50IGRhdGE8L3NwYW4+PD9Q
SXRhcmdldCBQSWRhdGE/PiI+Ci0gICA8IUFUVExJU1Qgc3BhbiB4bWxucyBDREFUQSAjSU1QTElF
RD4KLV0+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJwotICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICAgICAgICB4c2k6c2NoZW1hTG9j
YXRpb249Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwgaGNfc3RhZmYueHNkIj48aGVhZD48
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9ImRvY3VtZW50YWRvcHRub2RlMDEuanMiLz48c2NyaXB0IHR5
cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3Qo
KTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cCB4
bWxuczpkbXN0Yz0iaHR0cDovL3d3dy51c2EuY29tIj4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8
c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2Rl
PgotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iWWVzIj4xMjMwIE5vcnRo
IEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHAgeG1sbnM6ZG1z
dGM9Imh0dHA6Ly93d3cudXNhLmNvbSI+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5N
YXJ0aGEgUmF5bm9sZHMKLTwhW0NEQVRBW1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRp
dHlSZWZlcmVuY2UgbnVtYmVyIDIgJmVudDI7XV0+Ci08IVtDREFUQVtUaGlzIGlzIGFuIGFkamFj
ZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZ0YWI7XV0+PC9zdHJv
bmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZh
cj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyIgeHNpOm5v
TmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4
NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cCB4bWxuczpkbXN0Yz0iaHR0cDovL3d3dy5uZXR6ZXJv
LmNvbSI+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJv
bmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9z
dXA+Ci0gIDx2YXI+JmVudDQ7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJO
byIgaWQ9Il85ODU1MyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+UE8gQm94
IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwIHhtbG5zOm5tPSJo
dHRwOi8vd3d3LmFsdGF2aXN0YS5jb20iPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+
SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4K
LSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7IiBpZD0iXzk4NTU2IiB4c2k6bm9OYW1lc3BhY2VTY2hl
bWFMb2NhdGlvbj0iWWVzIj4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3Jv
bnltPgotIDwvcD4KLSA8cCB4bWxuczplbXAyPSJodHRwOi8vd3d3Lm5pc3QuZ292Ij4KLSAgPGVt
PkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5D
b21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1h
bGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyIgeHNpOm5vTmFtZXNw
YWNlU2NoZW1hTG9jYXRpb249IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5
ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2RlMDItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2Rl
MDItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWM2NWU0YmNl
My4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2Rv
Y3VtZW50YWRvcHRub2RlMDItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCww
IEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwzL2Nv
cmUvZG9jdW1lbnRhZG9wdG5vZGUwMgotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudGFkb3B0bm9kZTAyLmpzIGIvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2RlMDIuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMWM2OGE3NDAyLi4wMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRhZG9wdG5vZGUwMi5q
cworKysgL2Rldi9udWxsCkBAIC0xLDE4NSArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAy
MDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0
aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJ
bmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0
cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNv
ZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJy
YW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHly
aWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJ
IHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVy
IG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJu
ICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMy9jb3JlL2RvY3Vt
ZW50YWRvcHRub2RlMDIiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFy
IGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0
aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3Vp
dGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBh
c3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhl
cndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBl
eGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0
aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRV
cFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNy
ZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8v
Ci0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2Nz
TG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAo
dHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlz
LmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2Mi
LCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewot
ICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0g
Y2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsK
LSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0v
LwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAg
ICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8g
ICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAot
Ly8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAg
ICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxl
dGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0
YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLQlBZG9wdCB0aGUgY2xh
c3MgYXR0cmlidXRlIG5vZGUgb2YgdGhlIGZvdXJ0aCBhY3JvbnltIGVsZW1lbnQuICBDaGVjayBp
ZiB0aGlzIGF0dHJpYnV0ZSBoYXMgYmVlbiBhZG9wdGVkIAotCXN1Y2Nlc3NmdWxseSBieSB2ZXJp
ZnlpbmcgdGhlIG5vZGVOYW1lLCBub2RlVHlwZSwgb3duZXJFbGVtZW50LCBzcGVjaWZpZWQgYXR0
cmlidXRlcyBhbmQgY2hpbGQgbm9kZXMgCi0Jb2YgdGhlIGFkb3B0ZWQgbm9kZS4KLQotKiBAYXV0
aG9yIElCTQotKiBAYXV0aG9yIE5laWwgRGVsaW1hCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcv
VFIvMjAwNC9SRUMtRE9NLUxldmVsLTMtQ29yZS0yMDA0MDQwNy9jb3JlI0RvY3VtZW50My1hZG9w
dE5vZGUKLSovCi1mdW5jdGlvbiBkb2N1bWVudGFkb3B0bm9kZTAyKCkgewotICAgdmFyIHN1Y2Nl
c3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiZG9jdW1lbnRhZG9wdG5v
ZGUwMiIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIG5ld0RvYzsK
LSAgICAgIHZhciBkb21JbXBsOwotICAgICAgdmFyIGF0dHJPd25lckVsZW07Ci0gICAgICB2YXIg
ZWxlbWVudDsKLSAgICAgIHZhciBhdHRyOwotICAgICAgdmFyIGNoaWxkTGlzdDsKLSAgICAgIHZh
ciBhZG9wdGVkY2xhc3M7Ci0gICAgICB2YXIgYXR0cnNQYXJlbnQ7Ci0gICAgICB2YXIgbm9kZU5h
bWU7Ci0gICAgICB2YXIgbm9kZVR5cGU7Ci0gICAgICB2YXIgbm9kZVZhbHVlOwotICAgICAgdmFy
IGlzU3BlY2lmaWVkOwotICAgICAgdmFyIG51bGxEb2NUeXBlID0gbnVsbDsKLQotICAgICAgdmFy
IGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIgZmlyc3RDaGlsZFZhbHVlOwotICAgICAgdmFyIHNlY29u
ZENoaWxkOwotICAgICAgdmFyIHNlY29uZENoaWxkVHlwZTsKLSAgICAgIHZhciBzZWNvbmRDaGls
ZE5hbWU7Ci0gICAgICB2YXIgZG9jRWxlbTsKLSAgICAgIHZhciByb290TlM7Ci0gICAgICB2YXIg
cm9vdE5hbWU7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5
cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5k
b2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIp
OwotICAgICAgZG9jRWxlbSA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7Ci0KLSAgICAgIHJvb3ROYW1l
ID0gZG9jRWxlbS50YWdOYW1lOwotCi0gICAgICByb290TlMgPSBkb2NFbGVtLm5hbWVzcGFjZVVS
STsKLQotICAgICAgZG9tSW1wbCA9IGRvYy5pbXBsZW1lbnRhdGlvbjsKLW5ld0RvYyA9IGRvbUlt
cGwuY3JlYXRlRG9jdW1lbnQocm9vdE5TLHJvb3ROYW1lLG51bGxEb2NUeXBlKTsKLSAgICAgIGNo
aWxkTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgZWxl
bWVudCA9IGNoaWxkTGlzdC5pdGVtKDMpOwotICAgICAgYXR0ciA9IGVsZW1lbnQuZ2V0QXR0cmli
dXRlTm9kZSgiY2xhc3MiKTsKLSAgICAgIGFkb3B0ZWRjbGFzcyA9IG5ld0RvYy5hZG9wdE5vZGUo
YXR0cik7Ci0gICAgICAKLQlpZigKLQkKLQkoYWRvcHRlZGNsYXNzICE9IG51bGwpCi0KLQkpIHsK
LQlub2RlTmFtZSA9IGFkb3B0ZWRjbGFzcy5ub2RlTmFtZTsKLQotICAgICAgbm9kZVZhbHVlID0g
YWRvcHRlZGNsYXNzLm5vZGVWYWx1ZTsKLQotICAgICAgbm9kZVR5cGUgPSBhZG9wdGVkY2xhc3Mu
bm9kZVR5cGU7Ci0KLSAgICAgIGF0dHJPd25lckVsZW0gPSBhZG9wdGVkY2xhc3Mub3duZXJFbGVt
ZW50OwotCi0gICAgICBpc1NwZWNpZmllZCA9IGFkb3B0ZWRjbGFzcy5zcGVjaWZpZWQ7Ci0KLSAg
ICAgIGFzc2VydEVxdWFscygiZG9jdW1lbnRhZG9wdG5vZGUwMl9ub2RlTmFtZSIsImNsYXNzIixu
b2RlTmFtZSk7Ci0gICAgICAgYXNzZXJ0RXF1YWxzKCJkb2N1bWVudGFkb3B0bm9kZTAyX25vZGVU
eXBlIiwyLG5vZGVUeXBlKTsKLSAgICAgICBhc3NlcnROdWxsKCJkb2N1bWVudGFkb3B0bm9kZTAy
X293bmVyRG9jIixhdHRyT3duZXJFbGVtKTsKLSAgICBhc3NlcnRUcnVlKCJkb2N1bWVudGFkb3B0
bm9kZTAyX3NwZWNpZmllZCIsaXNTcGVjaWZpZWQpOwotZmlyc3RDaGlsZCA9IGFkb3B0ZWRjbGFz
cy5maXJzdENoaWxkOwotCi0gICAgICBhc3NlcnROb3ROdWxsKCJmaXJzdENoaWxkTm90TnVsbCIs
Zmlyc3RDaGlsZCk7Ci1maXJzdENoaWxkVmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsKLQot
ICAgICAgCi0JaWYoCi0JKCJZIiA9PSBmaXJzdENoaWxkVmFsdWUpCi0JKSB7Ci0Jc2Vjb25kQ2hp
bGQgPSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOwotCi0gICAgICBhc3NlcnROb3ROdWxsKCJzZWNv
bmRDaGlsZE5vdE51bGwiLHNlY29uZENoaWxkKTsKLXNlY29uZENoaWxkVHlwZSA9IHNlY29uZENo
aWxkLm5vZGVUeXBlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoInNlY29uZENoaWxkSXNFbnRpdHlS
ZWZlcmVuY2UiLDUsc2Vjb25kQ2hpbGRUeXBlKTsKLSAgICAgICBzZWNvbmRDaGlsZE5hbWUgPSBz
ZWNvbmRDaGlsZC5ub2RlTmFtZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJzZWNvbmRDaGlsZElz
RW50MVJlZmVyZW5jZSIsImFscGhhIixzZWNvbmRDaGlsZE5hbWUpOwotICAgICAgIAotCX0KLQkK
LQkJZWxzZSB7Ci0JCQlhc3NlcnRFcXVhbHMoImRvY3VtZW50YWRvcHRub2RlMDJfbm9kZVZhbHVl
IiwiWc6xIixub2RlVmFsdWUpOwotICAgICAgIAotCQl9Ci0JCi0JfQotCQotfQotCi0KLQotCi1m
dW5jdGlvbiBydW5UZXN0KCkgewotICAgZG9jdW1lbnRhZG9wdG5vZGUwMigpOwotfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2Rl
MDIueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRhZG9w
dG5vZGUwMi54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM3YWFkMzk5ZDAu
LjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9kb2N1
bWVudGFkb3B0bm9kZTAyLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotPD94
bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAot
ICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEt
c3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBi
ZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBk
ZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElU
WSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRp
b24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUi
PgotICAgPCFBVFRMSVNUIHAKLSAgICAgICAgZGlyIENEQVRBICdydGwnCi0gICAgICAgIHhtbG5z
OmRtc3RjIENEQVRBICNJTVBMSUVECi0gICAgICAgIHhtbG5zOm5tIENEQVRBICNJTVBMSUVECi0g
ICAgICAgIHhtbG5zOmVtcDIgQ0RBVEEgI0lNUExJRUQ+Ci0gICA8IUFUVExJU1QgaHRtbAotICAg
ICAgICAgICAgICAgICAgIHhtbG5zOnhzaSBDREFUQSAjSU1QTElFRAotICAgICAgICAgICAgICAg
ICAgIHhzaTpzY2hlbWFMb2NhdGlvbiBDREFUQSAjSU1QTElFRD4KLSAgIDwhQVRUTElTVCBhY3Jv
bnltIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uIENEQVRBICNJTVBMSUVEPgotICAgPCFF
TlRJVFkgZW50NCAiPHNwYW4geG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPkVs
ZW1lbnQgZGF0YTwvc3Bhbj48P1BJdGFyZ2V0IFBJZGF0YT8+Ij4KLSAgIDwhQVRUTElTVCBzcGFu
IHhtbG5zIENEQVRBICNJTVBMSUVEPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAx
Li0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnCi0gICAgICAg
IHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0g
ICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCBo
Y19zdGFmZi54c2QiPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0IGNo
YXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iZG9jdW1lbnRhZG9wdG5v
ZGUwMi5qcyIvPjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29t
cGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9h
ZENvbXBsZXRlKCkiPgotIDxwIHhtbG5zOmRtc3RjPSJodHRwOi8vd3d3LnVzYS5jb20iPgotICA8
ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxj
b2RlPkFjY291bnRhbnQ8L2NvZGU+Ci0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxl
PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0
aW9uPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgot
IDwvcD4KLSA8cCB4bWxuczpkbXN0Yz0iaHR0cDovL3d3dy51c2EuY29tIj4KLSAgPGVtPkVNUDAw
MDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkcwotPCFbQ0RBVEFbVGhpcyBpcyBhIENE
QVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmZW50MjtdXT4KLTwhW0NE
QVRBW1RoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8g
YSB0YWIgJnRhYjtdXT48L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3Vw
PjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
IiBjbGFzcz0iWWVzIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iWWVzIj4mYmV0YTsg
RGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwIHhtbG5zOmRtc3Rj
PSJodHRwOi8vd3d3Lm5ldHplcm8uY29tIj4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25n
PlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2Rl
PgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZW50NDs8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9Ik5vIiBpZD0iXzk4NTUzIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFM
b2NhdGlvbj0iWWVzIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8
L3A+Ci0gPHAgeG1sbnM6bm09Imh0dHA6Ly93d3cuYWx0YXZpc3RhLmNvbSI+Ci0gIDxlbT5FTVAw
MDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29u
bmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiIGlkPSJfOTg1NTYi
IHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJZZXMiPjI3IFNvdXRoIFJvYWQuIERhbGxh
cywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwIHhtbG5zOmVtcDI9Imh0dHA6Ly93
d3cubmlzdC5nb3YiPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJz
PC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAs
MDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFz
cz0iWWVzIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iWWVzIj4xODIxIE5vcmRpYy4g
Um9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9kZXJlbW92
ZWNoaWxkMjgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3Jl
L25vZGVyZW1vdmVjaGlsZDI4LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTFiMWYyMzk1OWYuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRt
bC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQyOC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwyICswLDAgQEAKLVRlc3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1T
dWl0ZS9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQyOAotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQy
OC5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQy
OC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNjODdjZjczYWYuLjAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hp
bGQyOC5qcworKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQg
w4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0
cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAK
LWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAK
LVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PD
gsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGll
ZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAy
L2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdl
dHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVu
dGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAg
cmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMy9jb3Jl
L25vZGVyZW1vdmVjaGlsZDI4IjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsK
LXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg
YnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0
IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9u
cywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAg
T3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0
aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJp
bmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAg
c2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8g
ICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAg
ICAvLwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAg
ZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAg
aWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0g
dGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAi
ZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEp
IHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAg
ICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBl
eCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0K
LQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAot
Ly8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8K
LS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRl
ZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQot
Ly8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENv
bXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBh
Z2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi0JVXNpbmcgcmVt
b3ZlQ2hpbGQgb24gYW4gQXR0cmlidXRlIG5vZGUgYXR0ZW1wdCB0byByZW1vdmUgaXRzIFRleHQg
Y2hpbGQgbm9kZSBhbmQKLQlhbmQgdmVyaWZ5IHRoZSBuYW1lIG9mIHRoZSByZXR1cm5lZCBub2Rl
IHRoYXQgd2FzIHJlbW92ZWQuICBOb3cgYXR0ZW1wdCB0aGUgcmV2ZXJzZQotCWFuZCB2ZXJpZnkg
aWYgYSBOT1RfRk9VTkRfRVJSIGlzIHRocm93bi4KLQotKiBAYXV0aG9yIElCTQotKiBAYXV0aG9y
IE5laWwgRGVsaW1hCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMtRE9NLUxl
dmVsLTMtQ29yZS0yMDA0MDQwNy9jb3JlI0lELTE3MzQ4MzQwNjYKLSovCi1mdW5jdGlvbiBub2Rl
cmVtb3ZlY2hpbGQyOCgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6
YXRpb24oYnVpbGRlciwgIm5vZGVyZW1vdmVjaGlsZDI4IikgIT0gbnVsbCkgcmV0dXJuOwotICAg
IHZhciBkb2M7Ci0gICAgICB2YXIgcGFyZW50TGlzdDsKLSAgICAgIHZhciBhdHRyc01hcDsKLSAg
ICAgIHZhciBwYXJlbnQ7Ci0gICAgICB2YXIgY2hpbGQ7Ci0gICAgICB2YXIgZWxlbTsKLSAgICAg
IHZhciByZW1vdmVkOwotICAgICAgdmFyIHJlbW92ZWROYW1lOwotICAgICAgdmFyIHJlbW92ZWRO
b2RlOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2Yo
dGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwot
ICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAg
ICAgIHBhcmVudExpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAg
ICAgIGVsZW0gPSBwYXJlbnRMaXN0Lml0ZW0oMCk7Ci0gICAgICBhdHRyc01hcCA9IGVsZW0uYXR0
cmlidXRlczsKLQotICAgICAgcGFyZW50ID0gYXR0cnNNYXAuZ2V0TmFtZWRJdGVtKCJ4c2k6bm9O
YW1lc3BhY2VTY2hlbWFMb2NhdGlvbiIpOwotICAgICAgY2hpbGQgPSBwYXJlbnQuZmlyc3RDaGls
ZDsKLQotICAgICAgcmVtb3ZlZCA9IHBhcmVudC5yZW1vdmVDaGlsZChjaGlsZCk7Ci0gICAgICBy
ZW1vdmVkTmFtZSA9IHJlbW92ZWQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoIm5v
ZGVyZW1vdmVjaGlsZDI4IiwiWWVzIixyZW1vdmVkTmFtZSk7Ci0gICAgICAgCi0JewotCQlzdWNj
ZXNzID0gZmFsc2U7Ci0JCXRyeSB7Ci0gICAgICAgICAgICByZW1vdmVkTm9kZSA9IGNoaWxkLnJl
bW92ZUNoaWxkKHBhcmVudCk7Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgpIHsKLSAgICAgIHN1Y2Nl
c3MgPSAodHlwZW9mKGV4LmNvZGUpICE9ICd1bmRlZmluZWQnICYmIGV4LmNvZGUgPT0gOCk7Ci0J
CX0KLQkJYXNzZXJ0VHJ1ZSgiTk9UX0ZPVU5EX0VSUl9ub2RlcmVtb3ZlY2hpbGQyOCIsc3VjY2Vz
cyk7Ci0JfQotCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBub2RlcmVtb3Zl
Y2hpbGQyOCgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9j
b3JlL25vZGVyZW1vdmVjaGlsZDI4LnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVs
My9jb3JlL25vZGVyZW1vdmVjaGlsZDI4LnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4YzBjNTgyZTZmYi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDI4LnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NzMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08
IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9F
TiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+
Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+
Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5
OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24x
IFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0g
Im5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIHAKLSAgICAgICAgZGlyIENEQVRBICdydGwn
Ci0gICAgICAgIHhtbG5zOmRtc3RjIENEQVRBICNJTVBMSUVECi0gICAgICAgIHhtbG5zOm5tIENE
QVRBICNJTVBMSUVECi0gICAgICAgIHhtbG5zOmVtcDIgQ0RBVEEgI0lNUExJRUQ+Ci0gICA8IUFU
VExJU1QgaHRtbAotICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaSBDREFUQSAjSU1QTElFRAot
ICAgICAgICAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbiBDREFUQSAjSU1QTElFRD4KLSAg
IDwhQVRUTElTVCBhY3JvbnltIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uIENEQVRBICNJ
TVBMSUVEPgotICAgPCFFTlRJVFkgZW50NCAiPHNwYW4geG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnPkVsZW1lbnQgZGF0YTwvc3Bhbj48P1BJdGFyZ2V0IFBJZGF0YT8+Ij4KLSAg
IDwhQVRUTElTVCBzcGFuIHhtbG5zIENEQVRBICNJTVBMSUVEPgotXT4KLTwhLS0gVGhpcyBpcyBj
b21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwnCi0gICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hl
bWEtaW5zdGFuY2UiCi0gICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCBoY19zdGFmZi54c2QiPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0
YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwu
anMiLz48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
bm9kZXJlbW92ZWNoaWxkMjguanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVu
Y3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9k
eSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cCB4bWxuczpkbXN0Yz0iaHR0cDovL3d3dy51
c2EuY29tIj4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwv
c3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPgotICA8c3VwPjU2LDAwMDwvc3VwPgot
ICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiB4c2k6bm9OYW1lc3Bh
Y2VTY2hlbWFMb2NhdGlvbj0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1
MTwvYWNyb255bT4KLSA8L3A+Ci0gPHAgeG1sbnM6ZG1zdGM9Imh0dHA6Ly93d3cudXNhLmNvbSI+
Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHMKLTwhW0NEQVRB
W1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmVu
dDI7XV0+Ci08IVtDREFUQVtUaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEg
cmVmZXJlbmNlIHRvIGEgdGFiICZ0YWI7XV0+PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwv
Y29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9u
eW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249
IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8
cCB4bWxuczpkbXN0Yz0iaHR0cDovL3d3dy5uZXR6ZXJvLmNvbSI+Ci0gIDxlbT5FTVAwMDAzPC9l
bT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQg
TWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmVudDQ7PC92YXI+
Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyIgaWQ9Il85ODU1MyIgeHNpOm5vTmFt
ZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8
L2Fjcm9ueW0+Ci0gPC9wPgotIDxwIHhtbG5zOm5tPSJodHRwOi8vd3d3LmFsdGF2aXN0YS5jb20i
PgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0g
IDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAg
PHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7
IiBpZD0iXzk4NTU2IiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iWWVzIj4yNyBTb3V0
aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cCB4bWxuczpl
bXAyPSJodHRwOi8vd3d3Lm5pc3QuZ292Ij4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25n
PlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2Rl
PgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9IlllcyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+
MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08
L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9j
b3JlL25vZGVyZW1vdmVjaGlsZDI5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRt
bC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQyOS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGFhNzEyOTM1NjlkLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMjktZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIw
MDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMjkKLVN0YXR1cwlT
dWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9k
ZXJlbW92ZWNoaWxkMjkuanMgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9k
ZXJlbW92ZWNoaWxkMjkuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzYWM5ZWY5
NmE0Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUv
bm9kZXJlbW92ZWNoaWxkMjkuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotCi0v
KgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAot
KE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNo
IENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZl
cnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRp
dW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAv
KioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJl
dHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVS
SSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0
ZS9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQyOSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVk
ID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVu
bmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0
aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcg
aXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBj
b21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNl
ZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVw
UGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAg
IC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBl
eGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVy
KCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0g
bnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAg
ICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVs
b2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9j
c0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsK
LSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJy
b3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwot
ICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29t
cGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0
VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50
IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNo
IGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1
bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAg
ICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0q
IAotCVVzaW5nIHJlbW92ZUNoaWxkIG9uIGEgbmFtZXNwYWNlIEF0dHJpYnV0ZSBub2RlIGF0dGVt
cHQgdG8gcmVtb3ZlIGl0cyBUZXh0IGNoaWxkIG5vZGUgYW5kCi0JYW5kIHZlcmlmeSB0aGUgbmFt
ZSBvZiB0aGUgcmV0dXJuZWQgbm9kZSB0aGF0IHdhcyByZW1vdmVkLiAgTm93IGF0dGVtcHQgdGhl
IHJldmVyc2UKLQlhbmQgdmVyaWZ5IGlmIGEgTk9UX0ZPVU5EX0VSUiBpcyB0aHJvd24uCi0KLSog
QGF1dGhvciBJQk0KLSogQGF1dGhvciBOZWlsIERlbGltYQotKiBAc2VlIGh0dHA6Ly93d3cudzMu
b3JnL1RSLzIwMDQvUkVDLURPTS1MZXZlbC0zLUNvcmUtMjAwNDA0MDcvY29yZSNJRC0xNzM0ODM0
MDY2Ci0qLwotZnVuY3Rpb24gbm9kZXJlbW92ZWNoaWxkMjkoKSB7Ci0gICB2YXIgc3VjY2VzczsK
LSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJub2RlcmVtb3ZlY2hpbGQyOSIp
ICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIHBhcmVudExpc3Q7Ci0g
ICAgICB2YXIgYXR0cnNNYXA7Ci0gICAgICB2YXIgcGFyZW50OwotICAgICAgdmFyIGNoaWxkOwot
ICAgICAgdmFyIGVsZW07Ci0gICAgICB2YXIgcmVtb3ZlZDsKLSAgICAgIHZhciByZW1vdmVkTmFt
ZTsKLSAgICAgIHZhciByZW1vdmVkTm9kZTsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51
bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAg
ICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAi
ZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBwYXJlbnRMaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJwIik7Ci0gICAgICBlbGVtID0gcGFyZW50TGlzdC5pdGVtKDApOwotICAgICAgYXR0
cnNNYXAgPSBlbGVtLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHBhcmVudCA9IGF0dHJzTWFwLmdldE5h
bWVkSXRlbSgieG1sbnM6ZG1zdGMiKTsKLSAgICAgIGNoaWxkID0gcGFyZW50LmZpcnN0Q2hpbGQ7
Ci0KLSAgICAgIHJlbW92ZWQgPSBwYXJlbnQucmVtb3ZlQ2hpbGQoY2hpbGQpOwotICAgICAgcmVt
b3ZlZE5hbWUgPSByZW1vdmVkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJub2Rl
cmVtb3ZlY2hpbGQyOSIsImh0dHA6Ly93d3cudXNhLmNvbSIscmVtb3ZlZE5hbWUpOwotICAgICAg
IAotCXsKLQkJc3VjY2VzcyA9IGZhbHNlOwotCQl0cnkgewotICAgICAgICAgICAgcmVtb3ZlZE5v
ZGUgPSBjaGlsZC5yZW1vdmVDaGlsZChwYXJlbnQpOwotICAgICAgICB9Ci0JCWNhdGNoKGV4KSB7
Ci0gICAgICBzdWNjZXNzID0gKHR5cGVvZihleC5jb2RlKSAhPSAndW5kZWZpbmVkJyAmJiBleC5j
b2RlID09IDgpOwotCQl9Ci0JCWFzc2VydFRydWUoInRocm93X05PVF9GT1VORF9FUlIiLHN1Y2Nl
c3MpOwotCX0KLQotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgbm9kZXJlbW92
ZWNoaWxkMjkoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMv
Y29yZS9ub2RlcmVtb3ZlY2hpbGQyOS54aHRtbCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQyOS54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTkzNjNkYmQyNjAuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRt
bC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQyOS54aHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDczICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/Pgot
PCFET0NUWVBFIGh0bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8v
RU4iCi0gICAieGh0bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsi
PgotICAgPCFFTlRJVFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0Nzsi
PgotICAgPCFFTlRJVFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0
OTsiPgotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9u
MSBQVUJMSUMgIm5vdGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVN
ICJub3RhdGlvbjJGaWxlIj4KLSAgIDwhQVRUTElTVCBwCi0gICAgICAgIGRpciBDREFUQSAncnRs
JwotICAgICAgICB4bWxuczpkbXN0YyBDREFUQSAjSU1QTElFRAotICAgICAgICB4bWxuczpubSBD
REFUQSAjSU1QTElFRAotICAgICAgICB4bWxuczplbXAyIENEQVRBICNJTVBMSUVEPgotICAgPCFB
VFRMSVNUIGh0bWwKLSAgICAgICAgICAgICAgICAgICB4bWxuczp4c2kgQ0RBVEEgI0lNUExJRUQK
LSAgICAgICAgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb24gQ0RBVEEgI0lNUExJRUQ+Ci0g
ICA8IUFUVExJU1QgYWNyb255bSB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbiBDREFUQSAj
SU1QTElFRD4KLSAgIDwhRU5USVRZIGVudDQgIjxzcGFuIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sJz5FbGVtZW50IGRhdGE8L3NwYW4+PD9QSXRhcmdldCBQSWRhdGE/PiI+Ci0g
ICA8IUFUVExJU1Qgc3BhbiB4bWxucyBDREFUQSAjSU1QTElFRD4KLV0+Ci08IS0tIFRoaXMgaXMg
Y29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sJwotICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2No
ZW1hLWluc3RhbmNlIgotICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwgaGNfc3RhZmYueHNkIj48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19z
dGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1s
LmpzIi8+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
Im5vZGVyZW1vdmVjaGlsZDI5LmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1
bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJv
ZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHAgeG1sbnM6ZG1zdGM9Imh0dHA6Ly93d3cu
dXNhLmNvbSI+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48
L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4KLSAgPHN1cD41NiwwMDA8L3N1cD4K
LSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgeHNpOm5vTmFtZXNw
YWNlU2NoZW1hTG9jYXRpb249IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1
NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwIHhtbG5zOmRtc3RjPSJodHRwOi8vd3d3LnVzYS5jb20i
PgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzCi08IVtDREFU
QVtUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZl
bnQyO11dPgotPCFbQ0RBVEFbVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBh
IHJlZmVyZW5jZSB0byBhIHRhYiAmdGFiO11dPjwvc3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8
L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3Jv
bnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9u
PSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0g
PHAgeG1sbnM6ZG1zdGM9Imh0dHA6Ly93d3cubmV0emVyby5jb20iPgotICA8ZW0+RU1QMDAwMzwv
ZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50
IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZlbnQ0OzwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iIGlkPSJfOTg1NTMiIHhzaTpub05h
bWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJZZXMiPlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4NTUz
PC9hY3JvbnltPgotIDwvcD4KLSA8cCB4bWxuczpubT0iaHR0cDovL3d3dy5hbHRhdmlzdGEuY29t
Ij4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgot
ICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0g
IDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhh
OyIgaWQ9Il85ODU1NiIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+MjcgU291
dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHAgeG1sbnM6
ZW1wMj0iaHR0cDovL3d3dy5uaXN0LmdvdiI+Ci0gIDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9u
Zz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29k
ZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiIGNsYXNzPSJZZXMiIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJZZXMi
PjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgot
PC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMv
Y29yZS9ub2RlcmVtb3ZlY2hpbGQzMC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMzAtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0NzE5NWVmODY0Zi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDMwLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8vd3d3LnczLm9yZy8y
MDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDMwCi1TdGF0dXMJ
U3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL25v
ZGVyZW1vdmVjaGlsZDMwLmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL25v
ZGVyZW1vdmVjaGlsZDMwLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzBhNDVm
MTIzNC4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3Jl
L25vZGVyZW1vdmVjaGlsZDMwLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLQot
LyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAK
LShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJj
aCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2
ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0
aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAg
LyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEBy
ZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRV
UkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3Vp
dGUvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMzAiOwotICAgfQotCi12YXIgZG9jc0xvYWRl
ZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0
aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1
bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJh
dGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5n
IGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8g
Y29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlz
ZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRV
cFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAg
ICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cg
ZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRl
cigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9
IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAg
ICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJl
bG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRv
Y3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7
Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVy
cm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsK
LSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNv
bXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNl
dFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVu
dCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGlj
aCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1m
dW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0g
ICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgot
KiAKLQotCi0KLQlVc2luZyByZW1vdmVDaGlsZCBvbiBhIGRlZmF1bHQgQXR0cmlidXRlIG5vZGUg
YXR0ZW1wdCB0byByZW1vdmUgaXRzIFRleHQgY2hpbGQgbm9kZSBhbmQKLQlhbmQgdmVyaWZ5IHRo
ZSBuYW1lIG9mIHRoZSByZXR1cm5lZCBub2RlIHRoYXQgd2FzIHJlbW92ZWQuICBOb3cgYXR0ZW1w
dCB0aGUgcmV2ZXJzZQotCWFuZCB2ZXJpZnkgaWYgYSBOT1RfRk9VTkRfRVJSIGlzIHRocm93bi4K
LQotKiBAYXV0aG9yIElCTQotKiBAYXV0aG9yIE5laWwgRGVsaW1hCi0qIEBzZWUgaHR0cDovL3d3
dy53My5vcmcvVFIvMjAwNC9SRUMtRE9NLUxldmVsLTMtQ29yZS0yMDA0MDQwNy9jb3JlI0lELTE3
MzQ4MzQwNjYKLSovCi1mdW5jdGlvbiBub2RlcmVtb3ZlY2hpbGQzMCgpIHsKLSAgIHZhciBzdWNj
ZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgIm5vZGVyZW1vdmVjaGls
ZDMwIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgcGFyZW50TGlz
dDsKLSAgICAgIHZhciBhdHRyc01hcDsKLSAgICAgIHZhciBwYXJlbnQ7Ci0gICAgICB2YXIgY2hp
bGQ7Ci0gICAgICB2YXIgZWxlbTsKLSAgICAgIHZhciByZW1vdmVkOwotICAgICAgdmFyIHJlbW92
ZWROb2RlOwotICAgICAgdmFyIHJlbW92ZWROYW1lOwotICAgICAgdmFyIGFwcGVuZGVkQ2hpbGQ7
Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlz
LmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAg
ICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAg
cGFyZW50TGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgicCIpOwotICAgICAgZWxlbSA9
IHBhcmVudExpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJzTWFwID0gZWxlbS5hdHRyaWJ1dGVzOwot
Ci0gICAgICBwYXJlbnQgPSBhdHRyc01hcC5nZXROYW1lZEl0ZW0oImRpciIpOwotICAgICAgY2hp
bGQgPSBwYXJlbnQuZmlyc3RDaGlsZDsKLQotICAgICAgcmVtb3ZlZCA9IHBhcmVudC5yZW1vdmVD
aGlsZChjaGlsZCk7Ci0gICAgICByZW1vdmVkTmFtZSA9IHJlbW92ZWQubm9kZVZhbHVlOwotCi0g
ICAgICBhc3NlcnRFcXVhbHMoIm5vZGVyZW1vdmVjaGlsZDMwIiwicnRsIixyZW1vdmVkTmFtZSk7
Ci0gICAgICAgCi0JewotCQlzdWNjZXNzID0gZmFsc2U7Ci0JCXRyeSB7Ci0gICAgICAgICAgICBy
ZW1vdmVkTm9kZSA9IGNoaWxkLnJlbW92ZUNoaWxkKHBhcmVudCk7Ci0gICAgICAgIH0KLQkJY2F0
Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9mKGV4LmNvZGUpICE9ICd1bmRlZmluZWQn
ICYmIGV4LmNvZGUgPT0gOCk7Ci0JCX0KLQkJYXNzZXJ0VHJ1ZSgidGhyb3dfTk9UX0ZPVU5EX0VS
UiIsc3VjY2Vzcyk7Ci0JfQotCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBu
b2RlcmVtb3ZlY2hpbGQzMCgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDMwLnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3ho
dG1sL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDMwLnhodG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0ZmRjNzA5Nzk1MC4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDMwLnhodG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNzMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJ
REFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAg
U3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEg
IiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEg
IiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2ls
b24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04g
bm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9u
MiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIHAKLSAgICAgICAgZGlyIENE
QVRBICdydGwnCi0gICAgICAgIHhtbG5zOmRtc3RjIENEQVRBICNJTVBMSUVECi0gICAgICAgIHht
bG5zOm5tIENEQVRBICNJTVBMSUVECi0gICAgICAgIHhtbG5zOmVtcDIgQ0RBVEEgI0lNUExJRUQ+
Ci0gICA8IUFUVExJU1QgaHRtbAotICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaSBDREFUQSAj
SU1QTElFRAotICAgICAgICAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbiBDREFUQSAjSU1Q
TElFRD4KLSAgIDwhQVRUTElTVCBhY3JvbnltIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9u
IENEQVRBICNJTVBMSUVEPgotICAgPCFFTlRJVFkgZW50NCAiPHNwYW4geG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnPkVsZW1lbnQgZGF0YTwvc3Bhbj48P1BJdGFyZ2V0IFBJZGF0
YT8+Ij4KLSAgIDwhQVRUTElTVCBzcGFuIHhtbG5zIENEQVRBICNJTVBMSUVEPgotXT4KLTwhLS0g
VGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwnCi0gICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAw
MS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCBoY19zdGFmZi54c2QiPjxoZWFkPjxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRp
dGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJz
ZWxmeGh0bWwuanMiLz48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0ibm9kZXJlbW92ZWNoaWxkMzAuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNj
cmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0Pjwv
aGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cCB4bWxuczpkbXN0Yz0iaHR0
cDovL3d3dy51c2EuY29tIj4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0
IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPgotICA8c3VwPjU2LDAw
MDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiB4c2k6
bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBU
ZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHAgeG1sbnM6ZG1zdGM9Imh0dHA6Ly93d3cu
dXNhLmNvbSI+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHMK
LTwhW0NEQVRBW1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVt
YmVyIDIgJmVudDI7XV0+Ci08IVtDREFUQVtUaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlv
biB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZ0YWI7XV0+PC9zdHJvbmc+Ci0gIDxjb2RlPlNl
Y3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4K
LSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1h
TG9jYXRpb249IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgot
IDwvcD4KLSA8cCB4bWxuczpkbXN0Yz0iaHR0cDovL3d3dy5uZXR6ZXJvLmNvbSI+Ci0gIDxlbT5F
TVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRl
cGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmVu
dDQ7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyIgaWQ9Il85ODU1MyIg
eHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+UE8gQm94IDI3IElydmluZywgdGV4
YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwIHhtbG5zOm5tPSJodHRwOi8vd3d3LmFsdGF2
aXN0YS5jb20iPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9z
dHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8
L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
IlkmYWxwaGE7IiBpZD0iXzk4NTU2IiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iWWVz
Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8
cCB4bWxuczplbXAyPSJodHRwOi8vd3d3Lm5pc3QuZ292Ij4KLSAgPGVtPkVNUDAwMDU8L2VtPgot
ICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFs
aXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFj
cm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRp
b249IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4K
LSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0
b20tZWxlbWVudHMvcmVhY3Rpb25zLWZvci13ZWJraXQtZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9yZWFjdGlvbnMtZm9yLXdlYmtpdC1l
eHRlbnNpb25zLWV4cGVjdGVkLnR4dAppbmRleCBhZDcxOTc3ODU5Ni4uOWY1NzllNmI3OTAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3JlYWN0aW9ucy1mb3It
d2Via2l0LWV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL3JlYWN0aW9ucy1mb3Itd2Via2l0LWV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0
CkBAIC0zLDEwICszLDYgQEAgUEFTUyBkcm9wem9uZSBvbiBIVE1MRWxlbWVudCBtdXN0IGVucXVl
dWUgYW4gYXR0cmlidXRlQ2hhbmdlZCByZWFjdGlvbiB3aGVuIGFkZGkKIFBBU1MgZHJvcHpvbmUg
b24gSFRNTEVsZW1lbnQgbXVzdCBlbnF1ZXVlIGFuIGF0dHJpYnV0ZUNoYW5nZWQgcmVhY3Rpb24g
d2hlbiByZXBsYWNpbmcgYW4gZXhpc3RpbmcgYXR0cmlidXRlIAogUEFTUyBkYXRhIG9uIENoYXJh
Y3RlckRhdGEgbXVzdCBlbnF1ZXVlIGFuIGF0dHJpYnV0ZUNoYW5nZWQgcmVhY3Rpb24gd2hlbiBy
ZXBsYWNpbmcgYW4gZXhpc3RpbmcgYXR0cmlidXRlIAogUEFTUyBkYXRhIG9uIENoYXJhY3RlckRh
dGEgbXVzdCBub3QgZW5xdWV1ZSBhbiBhdHRyaWJ1dGVDaGFuZ2VkIHJlYWN0aW9uIHdoZW4gcmVw
bGFjaW5nIGFuIGV4aXN0aW5nIHVub2JzZXJ2ZWQgYXR0cmlidXRlIAotUEFTUyBhcHBlbmREYXRh
IG9uIENoYXJhY3RlckRhdGEgbXVzdCBlbnF1ZXVlIGFuIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFj
ayB3aGVuIG11dGF0aW5nIGFuIGV4aXN0aW5nIGF0dHJpYnV0ZSAKLVBBU1MgaW5zZXJ0RGF0YSBv
biBDaGFyYWN0ZXJEYXRhIG11c3QgZW5xdWV1ZSBhbiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sg
d2hlbiBtdXRhdGluZyBhbiBleGlzdGluZyBhdHRyaWJ1dGUgCi1QQVNTIGRlbGV0ZURhdGEgb24g
Q2hhcmFjdGVyRGF0YSBtdXN0IGVucXVldWUgYW4gYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIHdo
ZW4gbXV0YXRpbmcgYW4gZXhpc3RpbmcgYXR0cmlidXRlIAotUEFTUyByZXBsYWNlRGF0YSBvbiBD
aGFyYWN0ZXJEYXRhIG11c3QgZW5xdWV1ZSBhbiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgd2hl
biBtdXRhdGluZyBhbiBleGlzdGluZyBhdHRyaWJ1dGUgCiBQQVNTIHJlbW92ZShIVE1MT3B0aW9u
RWxlbWVudCkgb24gSFRNTE9wdGlvbnNDb2xsZWN0aW9uIG11c3QgZW5xdWV1ZSBkaXNjb25uZWN0
ZWRDYWxsYmFjayB3aGVuIHJlbW92aW5nIGEgY3VzdG9tIGVsZW1lbnQgCiBQQVNTIHJlbW92ZShI
VE1MT3B0aW9uRWxlbWVudCkgb24gSFRNTFNlbGVjdEVsZW1lbnQgbXVzdCBlbnF1ZXVlIGRpc2Nv
bm5lY3RlZENhbGxiYWNrIHdoZW4gcmVtb3ZpbmcgYSBjdXN0b20gZWxlbWVudCAKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcmVhY3Rpb25zLWZvci13ZWJr
aXQtZXh0ZW5zaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcmVh
Y3Rpb25zLWZvci13ZWJraXQtZXh0ZW5zaW9ucy5odG1sCmluZGV4IGE2M2Q1NzNhMWU5Li5lMjAw
YzRjN2FhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcmVh
Y3Rpb25zLWZvci13ZWJraXQtZXh0ZW5zaW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3VzdG9tLWVsZW1lbnRzL3JlYWN0aW9ucy1mb3Itd2Via2l0LWV4dGVuc2lvbnMuaHRtbApAQCAt
MTcsNTMgKzE3LDkgQEAKIHRlc3RSZWZsZWN0QXR0cmlidXRlKCd3ZWJraXRkcm9wem9uZScsICd3
ZWJraXRkcm9wem9uZScsICdjb3B5JywgJ21vdmUnLCAnZHJvcHpvbmUgb24gSFRNTEVsZW1lbnQn
KTsKIAogdGVzdEF0dHJpYnV0ZU11dGF0b3IoZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUsIHZhbHVl
KSB7Ci0gICAgZWxlbWVudC5hdHRyaWJ1dGVzW25hbWVdLmZpcnN0Q2hpbGQuZGF0YSA9IHZhbHVl
OworICAgIGVsZW1lbnQuYXR0cmlidXRlc1tuYW1lXS52YWx1ZSA9IHZhbHVlOwogfSwgJ2RhdGEg
b24gQ2hhcmFjdGVyRGF0YScpOwogCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgZWxlbWVu
dCA9IGRlZmluZV9uZXdfY3VzdG9tX2VsZW1lbnQoWyd0aXRsZSddKTsKLSAgICB2YXIgaW5zdGFu
Y2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnQubmFtZSk7Ci0gICAgaW5zdGFuY2Uu
c2V0QXR0cmlidXRlKCd0aXRsZScsICdoZWxsbycpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
ZWxlbWVudC50YWtlTG9nKCkudHlwZXMoKSwgWydjb25zdHJ1Y3RlZCcsICdhdHRyaWJ1dGVDaGFu
Z2VkJ10pOwotICAgIGluc3RhbmNlLmF0dHJpYnV0ZXMudGl0bGUuZmlyc3RDaGlsZC5hcHBlbmRE
YXRhKCcgd29ybGQnKTsKLSAgICB2YXIgbG9nRW50cmllcyA9IGVsZW1lbnQudGFrZUxvZygpOwot
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nRW50cmllcy50eXBlcygpLCBbJ2F0dHJpYnV0ZUNo
YW5nZWQnXSk7Ci0gICAgYXNzZXJ0X2F0dHJpYnV0ZV9sb2dfZW50cnkobG9nRW50cmllcy5sYXN0
KCksIHtuYW1lOiAndGl0bGUnLCBvbGRWYWx1ZTogJ2hlbGxvJywgbmV3VmFsdWU6ICdoZWxsbyB3
b3JsZCcsIG5hbWVzcGFjZTogbnVsbH0pOwotfSwgJ2FwcGVuZERhdGEgb24gQ2hhcmFjdGVyRGF0
YSBtdXN0IGVucXVldWUgYW4gYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIHdoZW4gbXV0YXRpbmcg
YW4gZXhpc3RpbmcgYXR0cmlidXRlJyk7Ci0KLXRlc3QoZnVuY3Rpb24gKCkgewotICAgIHZhciBl
bGVtZW50ID0gZGVmaW5lX25ld19jdXN0b21fZWxlbWVudChbJ3RpdGxlJ10pOwotICAgIHZhciBp
bnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbWVudC5uYW1lKTsKLSAgICBpbnN0
YW5jZS5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgJ2ZvbycpOwotICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoZWxlbWVudC50YWtlTG9nKCkudHlwZXMoKSwgWydjb25zdHJ1Y3RlZCcsICdhdHRyaWJ1dGVD
aGFuZ2VkJ10pOwotICAgIGluc3RhbmNlLmF0dHJpYnV0ZXMudGl0bGUuZmlyc3RDaGlsZC5pbnNl
cnREYXRhKDIsICdiYXInKTsKLSAgICB2YXIgbG9nRW50cmllcyA9IGVsZW1lbnQudGFrZUxvZygp
OwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nRW50cmllcy50eXBlcygpLCBbJ2F0dHJpYnV0
ZUNoYW5nZWQnXSk7Ci0gICAgYXNzZXJ0X2F0dHJpYnV0ZV9sb2dfZW50cnkobG9nRW50cmllcy5s
YXN0KCksIHtuYW1lOiAndGl0bGUnLCBvbGRWYWx1ZTogJ2ZvbycsIG5ld1ZhbHVlOiAnZm9iYXJv
JywgbmFtZXNwYWNlOiBudWxsfSk7Ci19LCAnaW5zZXJ0RGF0YSBvbiBDaGFyYWN0ZXJEYXRhIG11
c3QgZW5xdWV1ZSBhbiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgd2hlbiBtdXRhdGluZyBhbiBl
eGlzdGluZyBhdHRyaWJ1dGUnKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGVsZW1l
bnQgPSBkZWZpbmVfbmV3X2N1c3RvbV9lbGVtZW50KFsndGl0bGUnXSk7Ci0gICAgdmFyIGluc3Rh
bmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50Lm5hbWUpOwotICAgIGluc3RhbmNl
LnNldEF0dHJpYnV0ZSgndGl0bGUnLCAnaGVsbG8gd29ybGQnKTsKLSAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGVsZW1lbnQudGFrZUxvZygpLnR5cGVzKCksIFsnY29uc3RydWN0ZWQnLCAnYXR0cmli
dXRlQ2hhbmdlZCddKTsKLSAgICBpbnN0YW5jZS5hdHRyaWJ1dGVzLnRpdGxlLmZpcnN0Q2hpbGQu
ZGVsZXRlRGF0YSg1LCAxMDApOwotICAgIHZhciBsb2dFbnRyaWVzID0gZWxlbWVudC50YWtlTG9n
KCk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dFbnRyaWVzLnR5cGVzKCksIFsnYXR0cmli
dXRlQ2hhbmdlZCddKTsKLSAgICBhc3NlcnRfYXR0cmlidXRlX2xvZ19lbnRyeShsb2dFbnRyaWVz
Lmxhc3QoKSwge25hbWU6ICd0aXRsZScsIG9sZFZhbHVlOiAnaGVsbG8gd29ybGQnLCBuZXdWYWx1
ZTogJ2hlbGxvJywgbmFtZXNwYWNlOiBudWxsfSk7Ci19LCAnZGVsZXRlRGF0YSBvbiBDaGFyYWN0
ZXJEYXRhIG11c3QgZW5xdWV1ZSBhbiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgd2hlbiBtdXRh
dGluZyBhbiBleGlzdGluZyBhdHRyaWJ1dGUnKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAg
dmFyIGVsZW1lbnQgPSBkZWZpbmVfbmV3X2N1c3RvbV9lbGVtZW50KFsndGl0bGUnXSk7Ci0gICAg
dmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50Lm5hbWUpOwotICAg
IGluc3RhbmNlLnNldEF0dHJpYnV0ZSgndGl0bGUnLCAnaGVsbG8nKTsKLSAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGVsZW1lbnQudGFrZUxvZygpLnR5cGVzKCksIFsnY29uc3RydWN0ZWQnLCAnYXR0
cmlidXRlQ2hhbmdlZCddKTsKLSAgICBpbnN0YW5jZS5hdHRyaWJ1dGVzLnRpdGxlLmZpcnN0Q2hp
bGQucmVwbGFjZURhdGEoMSwgNCwgJ2knKTsKLSAgICB2YXIgbG9nRW50cmllcyA9IGVsZW1lbnQu
dGFrZUxvZygpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nRW50cmllcy50eXBlcygpLCBb
J2F0dHJpYnV0ZUNoYW5nZWQnXSk7Ci0gICAgYXNzZXJ0X2F0dHJpYnV0ZV9sb2dfZW50cnkobG9n
RW50cmllcy5sYXN0KCksIHtuYW1lOiAndGl0bGUnLCBvbGRWYWx1ZTogJ2hlbGxvJywgbmV3VmFs
dWU6ICdoaScsIG5hbWVzcGFjZTogbnVsbH0pOwotfSwgJ3JlcGxhY2VEYXRhIG9uIENoYXJhY3Rl
ckRhdGEgbXVzdCBlbnF1ZXVlIGFuIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayB3aGVuIG11dGF0
aW5nIGFuIGV4aXN0aW5nIGF0dHJpYnV0ZScpOwotCiB0ZXN0X3dpdGhfd2luZG93KGZ1bmN0aW9u
IChjb250ZW50V2luZG93KSB7CiAgICAgY29uc3QgZWxlbWVudCA9IGRlZmluZV9jdXN0b21fZWxl
bWVudF9pbl93aW5kb3coY29udGVudFdpbmRvdywgJ2N1c3RvbS1lbGVtZW50JywgW10pOwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9BdHRyL2NoYW5nZS1pZC12aWEtYXR0ci1u
b2RlLXZhbHVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hhbmdl
LWlkLXZpYS1hdHRyLW5vZGUtdmFsdWUtZXhwZWN0ZWQudHh0CmluZGV4IDg1MWI1OGRiZWQzLi5k
OTgyOTNhN2Y0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jaGFuZ2Ut
aWQtdmlhLWF0dHItbm9kZS12YWx1ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vQXR0ci9jaGFuZ2UtaWQtdmlhLWF0dHItbm9kZS12YWx1ZS1leHBlY3RlZC50eHQKQEAg
LTM1LDEyMiArMzUsMzUgQEAgUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZiIpIGlzIGRv
Y3VtZW50LmJvZHkKIFBBU1MgZG9jdW1lbnQuYm9keS5pZCBpcyAiZiIKIFBBU1MgZG9jdW1lbnQu
Ym9keS5nZXRBdHRyaWJ1dGUoImlkIikgaXMgImYiCiBQQVNTIGF0dHJOb2RlLnRleHRDb250ZW50
IGlzICJmIgotUEFTUyBhdHRyTm9kZS5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCi0KLTcuIEF0dHIu
cmVwbGFjZUNoaWxkKCkuCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmIikgaXMgbnVs
bAotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZyIpIGlzIGRvY3VtZW50LmJvZHkKLVBB
U1MgZG9jdW1lbnQuYm9keS5pZCBpcyAiZyIKLVBBU1MgZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1
dGUoImlkIikgaXMgImciCi1QQVNTIGF0dHJOb2RlLnRleHRDb250ZW50IGlzICJnIgotUEFTUyBh
dHRyTm9kZS5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCi0KLTguIEF0dHIuaW5zZXJ0QmVmb3JlKCku
Ci1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnIikgaXMgbnVsbAotUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiMGciKSBpcyBkb2N1bWVudC5ib2R5Ci1QQVNTIGRvY3VtZW50LmJv
ZHkuaWQgaXMgIjBnIgotUEFTUyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
MGciCi1QQVNTIGF0dHJOb2RlLnRleHRDb250ZW50IGlzICIwZyIKLVBBU1MgYXR0ck5vZGUuY2hp
bGROb2Rlcy5sZW5ndGggaXMgMgotCi05LiBhdHRyLmFwcGVuZENoaWxkKCkuCi1QQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCIwZyIpIGlzIG51bGwKLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIjBnMiIpIGlzIGRvY3VtZW50LmJvZHkKLVBBU1MgZG9jdW1lbnQuYm9keS5pZCBpcyAi
MGcyIgotUEFTUyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMGcyIgotUEFT
UyBhdHRyTm9kZS50ZXh0Q29udGVudCBpcyAiMGcyIgotUEFTUyBhdHRyTm9kZS5jaGlsZE5vZGVz
Lmxlbmd0aCBpcyAzCi0KLTEwLiBBdHRyLnJlbW92ZUNoaWxkKCkKLVBBU1MgZG9jdW1lbnQuYm9k
eS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDAKLVBBU1MgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImgiKSBpcyBudWxsCi1QQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCIiKSBpcyBudWxsCi1QQVNTIGRvY3VtZW50LmJvZHkuaWQgaXMgIiIKLVBBU1MgZG9j
dW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIiIKLVBBU1MgZG9jdW1lbnQuYm9keS5n
ZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLnRleHRDb250ZW50IGlzICIiCi0KLTExLiBDaGFuZ2luZyBU
ZXh0Lm5vZGVWYWx1ZS4KLVBBU1MgYXR0ck5vZGUuZmlyc3RDaGlsZC5ub2RlVmFsdWUgaXMgImki
Ci1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpIikgaXMgZG9jdW1lbnQuYm9keQotUEFT
UyBkb2N1bWVudC5ib2R5LmlkIGlzICJpIgotUEFTUyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0
ZSgiaWQiKSBpcyAiaSIKLVBBU1MgYXR0ck5vZGUudGV4dENvbnRlbnQgaXMgImkiCi1QQVNTIGF0
dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLQotMTIuIENobmFnaW5nIEF0dHIudGV4dENv
bnRlbnQuCitQQVNTIGF0dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDAKKworNy4gQ2hhbmdp
bmcgQXR0ci50ZXh0Q29udGVudC4KIFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImkiKSBp
cyBudWxsCiBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJoaSIpIGlzIGRvY3VtZW50LmJv
ZHkKIFBBU1MgZG9jdW1lbnQuYm9keS5pZCBpcyAiaGkiCiBQQVNTIGRvY3VtZW50LmJvZHkuZ2V0
QXR0cmlidXRlKCJpZCIpIGlzICJoaSIKIFBBU1MgYXR0ck5vZGUudGV4dENvbnRlbnQgaXMgImhp
IgotUEFTUyBhdHRyTm9kZS5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIGF0dHJOb2RlLmNo
aWxkTm9kZXMubGVuZ3RoIGlzIDAKIAotMTMuIFRleHQuc3BsaXRUZXh0KCkuCis4LiBOb2RlLm5v
cm1hbGl6ZSgpLCBqb2luaW5nIHRleHQgbm9kZXMuCiBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJoaSIpIGlzIGRvY3VtZW50LmJvZHkKIFBBU1MgZG9jdW1lbnQuYm9keS5pZCBpcyAiaGki
CiBQQVNTIGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICJoaSIKIFBBU1MgZG9j
dW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLnRleHRDb250ZW50IGlzICJoaSIKLVBB
U1MgZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLmNoaWxkTm9kZXMubGVuZ3Ro
IGlzIDIKK1BBU1MgZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLmNoaWxkTm9k
ZXMubGVuZ3RoIGlzIDAKIAotMTQuIE5vZGUubm9ybWFsaXplKCksIGpvaW5pbmcgdGV4dCBub2Rl
cy4KLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhpIikgaXMgZG9jdW1lbnQuYm9keQot
UEFTUyBkb2N1bWVudC5ib2R5LmlkIGlzICJoaSIKLVBBU1MgZG9jdW1lbnQuYm9keS5nZXRBdHRy
aWJ1dGUoImlkIikgaXMgImhpIgotUEFTUyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZU5vZGUo
ImlkIikudGV4dENvbnRlbnQgaXMgImhpIgotUEFTUyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0
ZU5vZGUoImlkIikuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQotCi0xNi4gQ2hhbmdpbmcgVGV4dC5k
YXRhLgotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaiIpIGlzIG51bGwKLVBBU1MgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImsiKSBpcyBkb2N1bWVudC5ib2R5Ci1QQVNTIGRvY3VtZW50
LmJvZHkuaWQgaXMgImsiCi1QQVNTIGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpIGlz
ICJrIgotUEFTUyBhdHRyTm9kZS50ZXh0Q29udGVudCBpcyAiayIKLVBBU1MgYXR0ck5vZGUuY2hp
bGROb2Rlcy5sZW5ndGggaXMgMQotCi0xNy4gQ2hhbmdpbmcgdGV4dCBjaGlsZCB3aXRoIGFwcGVu
ZERhdGEoKS4KLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImsiKSBpcyBudWxsCi1QQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrbCIpIGlzIGRvY3VtZW50LmJvZHkKLVBBU1MgZG9j
dW1lbnQuYm9keS5pZCBpcyAia2wiCi1QQVNTIGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJp
ZCIpIGlzICJrbCIKLVBBU1MgYXR0ck5vZGUudGV4dENvbnRlbnQgaXMgImtsIgotUEFTUyBhdHRy
Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCi0KLTE4LiBDaGFuZ2luZyB0ZXh0IGNoaWxkIHdp
dGggaW5zZXJ0RGF0YSgpLgotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgia2wiKSBpcyBu
dWxsCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrMWwiKSBpcyBkb2N1bWVudC5ib2R5
Ci1QQVNTIGRvY3VtZW50LmJvZHkuaWQgaXMgImsxbCIKLVBBU1MgZG9jdW1lbnQuYm9keS5nZXRB
dHRyaWJ1dGUoImlkIikgaXMgImsxbCIKLVBBU1MgYXR0ck5vZGUudGV4dENvbnRlbnQgaXMgImsx
bCIKLVBBU1MgYXR0ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQotCi0xOS4gQ2hhbmdpbmcg
dGV4dCBjaGlsZCB3aXRoIGRlbGV0ZURhdGEoKS4KLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImsxbCIpIGlzIG51bGwKLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImwiKSBpcyBk
b2N1bWVudC5ib2R5Ci1QQVNTIGRvY3VtZW50LmJvZHkuaWQgaXMgImwiCi1QQVNTIGRvY3VtZW50
LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICJsIgotUEFTUyBhdHRyTm9kZS50ZXh0Q29udGVu
dCBpcyAibCIKLVBBU1MgYXR0ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQotCi0yMC4gQ2hh
bmdpbmcgdGV4dCBjaGlsZCB3aXRoIHJlcGxhY2VEYXRhKCkuCi1QQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsIikgaXMgbnVsbAotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW4i
KSBpcyBkb2N1bWVudC5ib2R5Ci1QQVNTIGRvY3VtZW50LmJvZHkuaWQgaXMgIm1uIgotUEFTUyBk
b2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAibW4iCi1QQVNTIGF0dHJOb2RlLnRl
eHRDb250ZW50IGlzICJtbiIKLVBBU1MgYXR0ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQot
Ci0yMS4gUmVtb3ZlIGFuIEF0dHIgbm9kZS4KKzkuIFJlbW92ZSBhbiBBdHRyIG5vZGUuCiBQQVNT
IGRvY3VtZW50LmJvZHkuaWQgaXMgIiIKIFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1u
IikgaXMgbnVsbAogUEFTUyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyBudWxs
CiBQQVNTIGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSBpcyBudWxsCiAKLTIy
LiBBZGQgYW4gQXR0ciBub2RlLgorMTAuIEFkZCBhbiBBdHRyIG5vZGUuCiBQQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJvIikgaXMgZG9jdW1lbnQuYm9keQogUEFTUyBkb2N1bWVudC5ib2R5
LmlkIGlzICJvIgogUEFTUyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAibyIK
IAotMjMuIEFkZCBhbiBBdHRyIG5vZGUgb3ZlciBhbiBleGlzdGluZyBvbmUuCisxMS4gQWRkIGFu
IEF0dHIgbm9kZSBvdmVyIGFuIGV4aXN0aW5nIG9uZS4KIFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm8iKSBpcyBudWxsCiBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwIikgaXMg
ZG9jdW1lbnQuYm9keQogUEFTUyBkb2N1bWVudC5ib2R5LmlkIGlzICJwIgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jaGFuZ2UtaWQtdmlhLWF0dHItbm9kZS12YWx1ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jaGFuZ2UtaWQtdmlhLWF0dHItbm9kZS12
YWx1ZS5odG1sCmluZGV4IGYwMDg2MzYxNDU3Li5hYzk4MmIwZWU1YSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jaGFuZ2UtaWQtdmlhLWF0dHItbm9kZS12YWx1ZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hhbmdlLWlkLXZpYS1hdHRyLW5vZGUt
dmFsdWUuaHRtbApAQCAtNDYsMTQ2ICs0NiwzMyBAQCBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImYiKScsICdkb2N1bWVudC5ib2R5Jyk7CiBzaG91bGRCZSgnZG9jdW1lbnQuYm9k
eS5pZCcsICciZiInKTsKIHNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQi
KScsICciZiInKTsKIHNob3VsZEJlKCdhdHRyTm9kZS50ZXh0Q29udGVudCcsICciZiInKTsKLXNo
b3VsZEJlKCdhdHRyTm9kZS5jaGlsZE5vZGVzLmxlbmd0aCcsICcxJyk7CitzaG91bGRCZSgnYXR0
ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGgnLCAnMCcpOwogCi0vLyBGaXJlZm94IGRvZXNuJ3Qgc3Vw
cG9ydCB0aGVzZSBmb3IgQXR0ciBub2Rlcy4KLWRlYnVnKCJcbjcuIEF0dHIucmVwbGFjZUNoaWxk
KCkuIik7Ci10cnkgewotICAgIGF0dHJOb2RlLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiZyIpLCBhdHRyTm9kZS5maXJzdENoaWxkKTsKLSAgICBzaG91bGRCZSgnZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImYiKScsICdudWxsJyk7Ci0gICAgc2hvdWxkQmUoJ2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJnIiknLCAnZG9jdW1lbnQuYm9keScpOwotICAgIHNob3VsZEJlKCdk
b2N1bWVudC5ib2R5LmlkJywgJyJnIicpOwotICAgIHNob3VsZEJlKCdkb2N1bWVudC5ib2R5Lmdl
dEF0dHJpYnV0ZSgiaWQiKScsICciZyInKTsKLSAgICBzaG91bGRCZSgnYXR0ck5vZGUudGV4dENv
bnRlbnQnLCAnImciJyk7Ci0gICAgc2hvdWxkQmUoJ2F0dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3Ro
JywgJzEnKTsKLX0gY2F0Y2ggKGV4KSB7Ci0gICAgZGVidWcoZXgpOwotfQotCi1kZWJ1ZygiXG44
LiBBdHRyLmluc2VydEJlZm9yZSgpLiIpOwotdHJ5IHsKLSAgICBhdHRyTm9kZS5pbnNlcnRCZWZv
cmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjAiKSwgYXR0ck5vZGUuZmlyc3RDaGlsZCk7Ci0g
ICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnIiknLCAnbnVsbCcpOwotICAg
IHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiMGciKScsICdkb2N1bWVudC5ib2R5
Jyk7Ci0gICAgc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuaWQnLCAnIjBnIicpOwotICAgIHNob3Vs
ZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKScsICciMGciJyk7Ci0gICAgc2hv
dWxkQmUoJ2F0dHJOb2RlLnRleHRDb250ZW50JywgJyIwZyInKTsKLSAgICBzaG91bGRCZSgnYXR0
ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGgnLCAnMicpOwotfSBjYXRjaCAoZXgpIHsKLSAgICBkZWJ1
ZyhleCk7Ci19Ci0KLWRlYnVnKCJcbjkuIGF0dHIuYXBwZW5kQ2hpbGQoKS4iKTsKLXRyeSB7Ci0g
ICAgYXR0ck5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjIiKSk7Ci0g
ICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIwZyIpJywgJ251bGwnKTsKLSAg
ICBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIjBnMiIpJywgJ2RvY3VtZW50LmJv
ZHknKTsKLSAgICBzaG91bGRCZSgnZG9jdW1lbnQuYm9keS5pZCcsICciMGcyIicpOwotICAgIHNo
b3VsZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKScsICciMGcyIicpOwotICAg
IHNob3VsZEJlKCdhdHRyTm9kZS50ZXh0Q29udGVudCcsICciMGcyIicpOwotICAgIHNob3VsZEJl
KCdhdHRyTm9kZS5jaGlsZE5vZGVzLmxlbmd0aCcsICczJyk7Ci19IGNhdGNoIChleCkgewotICAg
IGRlYnVnKGV4KTsKLX0KLQotZGVidWcoIlxuMTAuIEF0dHIucmVtb3ZlQ2hpbGQoKSIpOwotYXR0
ck5vZGUubm9kZVZhbHVlID0gImgiOwotYXR0ck5vZGUucmVtb3ZlQ2hpbGQoYXR0ck5vZGUuZmly
c3RDaGlsZCk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIp
LmNoaWxkTm9kZXMubGVuZ3RoJywgJzAnKTsKLXNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaCIpJywgJ251bGwnKTsKLXNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
IiknLCAnbnVsbCcpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuaWQnLCAnIiInKTsKLXNob3Vs
ZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKScsICciIicpOwotc2hvdWxkQmUo
J2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS50ZXh0Q29udGVudCcsICciIicp
OwotCi1kZWJ1ZygiXG4xMS4gQ2hhbmdpbmcgVGV4dC5ub2RlVmFsdWUuIik7Ci1hdHRyTm9kZS5u
b2RlVmFsdWUgPSAiaCI7Ci1hdHRyTm9kZS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9ICJpIjsKLXNo
b3VsZEJlKCdhdHRyTm9kZS5maXJzdENoaWxkLm5vZGVWYWx1ZScsICciaSInKTsKLXNob3VsZEJl
KCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaSIpJywgJ2RvY3VtZW50LmJvZHknKTsKLXNob3Vs
ZEJlKCdkb2N1bWVudC5ib2R5LmlkJywgJyJpIicpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHku
Z2V0QXR0cmlidXRlKCJpZCIpJywgJyJpIicpOwotc2hvdWxkQmUoJ2F0dHJOb2RlLnRleHRDb250
ZW50JywgJyJpIicpOwotc2hvdWxkQmUoJ2F0dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoJywgJzEn
KTsKLQotZGVidWcoIlxuMTIuIENobmFnaW5nIEF0dHIudGV4dENvbnRlbnQuIik7CitkZWJ1Zygi
XG43LiBDaGFuZ2luZyBBdHRyLnRleHRDb250ZW50LiIpOwogYXR0ck5vZGUudGV4dENvbnRlbnQg
PSAiaGkiOwogc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpIiknLCAnbnVsbCcp
Owogc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJoaSIpJywgJ2RvY3VtZW50LmJv
ZHknKTsKIHNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmlkJywgJyJoaSInKTsKIHNob3VsZEJlKCdk
b2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKScsICciaGkiJyk7CiBzaG91bGRCZSgnYXR0
ck5vZGUudGV4dENvbnRlbnQnLCAnImhpIicpOwotc2hvdWxkQmUoJ2F0dHJOb2RlLmNoaWxkTm9k
ZXMubGVuZ3RoJywgJzEnKTsKLQotZGVidWcoIlxuMTMuIFRleHQuc3BsaXRUZXh0KCkuIik7Ci1h
dHRyTm9kZS5maXJzdENoaWxkLnNwbGl0VGV4dCgxKTsKLXNob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiaGkiKScsICdkb2N1bWVudC5ib2R5Jyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQu
Ym9keS5pZCcsICciaGkiJyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUo
ImlkIiknLCAnImhpIicpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlTm9k
ZSgiaWQiKS50ZXh0Q29udGVudCcsICciaGkiJyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5n
ZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLmNoaWxkTm9kZXMubGVuZ3RoJywgJzInKTsKK3Nob3VsZEJl
KCdhdHRyTm9kZS5jaGlsZE5vZGVzLmxlbmd0aCcsICcwJyk7CiAKLWRlYnVnKCJcbjE0LiBOb2Rl
Lm5vcm1hbGl6ZSgpLCBqb2luaW5nIHRleHQgbm9kZXMuIik7CitkZWJ1ZygiXG44LiBOb2RlLm5v
cm1hbGl6ZSgpLCBqb2luaW5nIHRleHQgbm9kZXMuIik7CiBhdHRyTm9kZS5ub3JtYWxpemUoKTsK
IHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGkiKScsICdkb2N1bWVudC5ib2R5
Jyk7CiBzaG91bGRCZSgnZG9jdW1lbnQuYm9keS5pZCcsICciaGkiJyk7CiBzaG91bGRCZSgnZG9j
dW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIiknLCAnImhpIicpOwogc2hvdWxkQmUoJ2RvY3Vt
ZW50LmJvZHkuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS50ZXh0Q29udGVudCcsICciaGkiJyk7Ci1z
aG91bGRCZSgnZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLmNoaWxkTm9kZXMu
bGVuZ3RoJywgJzEnKTsKLQotZGVidWcoIlxuMTYuIENoYW5naW5nIFRleHQuZGF0YS4iKTsKLWF0
dHJOb2RlLmZpcnN0Q2hpbGQuZGF0YSA9ICJrIjsKLXNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiaiIpJywgJ251bGwnKTsKLXNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiayIpJywgJ2RvY3VtZW50LmJvZHknKTsKLXNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmlkJywg
JyJrIicpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpJywgJyJr
IicpOwotc2hvdWxkQmUoJ2F0dHJOb2RlLnRleHRDb250ZW50JywgJyJrIicpOwotc2hvdWxkQmUo
J2F0dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoJywgJzEnKTsKLQotZGVidWcoIlxuMTcuIENoYW5n
aW5nIHRleHQgY2hpbGQgd2l0aCBhcHBlbmREYXRhKCkuIik7Ci1hdHRyTm9kZS5maXJzdENoaWxk
LmFwcGVuZERhdGEoImwiKTsKLXNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiayIp
JywgJ251bGwnKTsKLXNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgia2wiKScsICdk
b2N1bWVudC5ib2R5Jyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5pZCcsICcia2wiJyk7Ci1z
aG91bGRCZSgnZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIiknLCAnImtsIicpOwotc2hv
dWxkQmUoJ2F0dHJOb2RlLnRleHRDb250ZW50JywgJyJrbCInKTsKLXNob3VsZEJlKCdhdHRyTm9k
ZS5jaGlsZE5vZGVzLmxlbmd0aCcsICcxJyk7Ci0KLWRlYnVnKCJcbjE4LiBDaGFuZ2luZyB0ZXh0
IGNoaWxkIHdpdGggaW5zZXJ0RGF0YSgpLiIpOwotYXR0ck5vZGUuZmlyc3RDaGlsZC5pbnNlcnRE
YXRhKDEsICIxIik7Ci1zaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtsIiknLCAn
bnVsbCcpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrMWwiKScsICdkb2N1
bWVudC5ib2R5Jyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5pZCcsICciazFsIicpOwotc2hv
dWxkQmUoJ2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpJywgJyJrMWwiJyk7Ci1zaG91
bGRCZSgnYXR0ck5vZGUudGV4dENvbnRlbnQnLCAnImsxbCInKTsKLXNob3VsZEJlKCdhdHRyTm9k
ZS5jaGlsZE5vZGVzLmxlbmd0aCcsICcxJyk7Ci0KLWRlYnVnKCJcbjE5LiBDaGFuZ2luZyB0ZXh0
IGNoaWxkIHdpdGggZGVsZXRlRGF0YSgpLiIpOwotYXR0ck5vZGUuZmlyc3RDaGlsZC5kZWxldGVE
YXRhKDAsIDIpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrMWwiKScsICdu
dWxsJyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImwiKScsICdkb2N1bWVu
dC5ib2R5Jyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5pZCcsICcibCInKTsKLXNob3VsZEJl
KCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKScsICcibCInKTsKLXNob3VsZEJlKCdh
dHRyTm9kZS50ZXh0Q29udGVudCcsICcibCInKTsKLXNob3VsZEJlKCdhdHRyTm9kZS5jaGlsZE5v
ZGVzLmxlbmd0aCcsICcxJyk7Ci0KLWRlYnVnKCJcbjIwLiBDaGFuZ2luZyB0ZXh0IGNoaWxkIHdp
dGggcmVwbGFjZURhdGEoKS4iKTsKLWF0dHJOb2RlLmZpcnN0Q2hpbGQucmVwbGFjZURhdGEoMCwg
MSwgIm1uIik7Ci1zaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImwiKScsICdudWxs
Jyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1uIiknLCAnZG9jdW1lbnQu
Ym9keScpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuaWQnLCAnIm1uIicpOwotc2hvdWxkQmUo
J2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpJywgJyJtbiInKTsKLXNob3VsZEJlKCdh
dHRyTm9kZS50ZXh0Q29udGVudCcsICcibW4iJyk7Ci1zaG91bGRCZSgnYXR0ck5vZGUuY2hpbGRO
b2Rlcy5sZW5ndGgnLCAnMScpOworc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRl
Tm9kZSgiaWQiKS5jaGlsZE5vZGVzLmxlbmd0aCcsICcwJyk7CiAKLWRlYnVnKCJcbjIxLiBSZW1v
dmUgYW4gQXR0ciBub2RlLiIpOworZGVidWcoIlxuOS4gUmVtb3ZlIGFuIEF0dHIgbm9kZS4iKTsK
IGRvY3VtZW50LmJvZHkucmVtb3ZlQXR0cmlidXRlTm9kZShhdHRyTm9kZSk7CiBzaG91bGRCZSgn
ZG9jdW1lbnQuYm9keS5pZCcsICciIicpOwogc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtbiIpJywgJ251bGwnKTsKIHNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0
ZSgiaWQiKScsICdudWxsJyk7CiBzaG91bGRCZSgnZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVO
b2RlKCJpZCIpJywgJ251bGwnKTsKIAotZGVidWcoIlxuMjIuIEFkZCBhbiBBdHRyIG5vZGUuIik7
CitkZWJ1ZygiXG4xMC4gQWRkIGFuIEF0dHIgbm9kZS4iKTsKIHZhciBhdHRyTm9kZSA9IGRvY3Vt
ZW50LmNyZWF0ZUF0dHJpYnV0ZSgiaWQiKTsKIGF0dHJOb2RlLnZhbHVlID0gIm8iOwogZG9jdW1l
bnQuYm9keS5zZXRBdHRyaWJ1dGVOb2RlKGF0dHJOb2RlKTsKQEAgLTE5Myw3ICs4MCw3IEBAIHNo
b3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibyIpJywgJ2RvY3VtZW50LmJvZHknKTsK
IHNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmlkJywgJyJvIicpOwogc2hvdWxkQmUoJ2RvY3VtZW50
LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpJywgJyJvIicpOwogCi1kZWJ1ZygiXG4yMy4gQWRkIGFu
IEF0dHIgbm9kZSBvdmVyIGFuIGV4aXN0aW5nIG9uZS4iKTsKK2RlYnVnKCJcbjExLiBBZGQgYW4g
QXR0ciBub2RlIG92ZXIgYW4gZXhpc3Rpbmcgb25lLiIpOwogdmFyIGF0dHJOb2RlID0gZG9jdW1l
bnQuY3JlYXRlQXR0cmlidXRlKCJpZCIpOwogYXR0ck5vZGUudmFsdWUgPSAicCI7CiBkb2N1bWVu
dC5ib2R5LnNldEF0dHJpYnV0ZU5vZGUoYXR0ck5vZGUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1jYWNoZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9BdHRyL2NoaWxkLW5vZGVzLWNhY2hlLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk3NmIxMjA5MjEuLjAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hpbGQtbm9kZXMtY2FjaGUtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1QQVNTCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1jYWNoZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1jYWNoZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwZDM0OGNkOTVmNC4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1jYWNoZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzgg
KzAsMCBAQAotPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgotPHA+UnVubmluZyB0ZXN0Li4uPC9wPgot
PHRleHRhcmVhIGlkPXQgcm93cz0yMD50ZXh0YXJlYTwvdGV4dGFyZWE+Ci08c2NyaXB0PgotaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBp
ZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xs
ZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3Jj
ZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJl
Zm9yZSBhIGNvbGxlY3QpCi0gICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7Ci0gICAg
fQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0Iik7Ci0gICAgdmFyIG5vZGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InQiKS5nZXRBdHRyaWJ1dGVOb2RlKCdyb3dzJykuY2hpbGROb2RlczsKLSAgICBub2Rlc1swXTsg
Ly8gUHJpbWUgdGhlIGNoaWxkIG5vZGUgY2FjaGUuCi0gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVD
aGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidCIpKTsKLSAgICBlbGVtLmdldEF0dHJpYnV0
ZU5vZGUoJ3Jvd3MnKS5yZW1vdmVDaGlsZChub2Rlc1swXSk7Ci0gICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKLSAgICAgICAgZ2MoKTsKLSAgICAgICAgZ2MoKTsKLSAgICAgICAgZ2MoKTsKLSAg
ICAgICAgdHJ5IHsgbm9kZXNbMF0udGV4dENvbnRlbnQgfSBjYXRjaCAoZXgpIHsgfQotCi0gICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwIilbMF0uaW5uZXJIVE1MID0gIlBB
U1MiCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIDApOwotfQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9BdHRyL2NoaWxkLW5vZGVzLWxlbmd0aC1jYWNoZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9BdHRyL2NoaWxkLW5vZGVzLWxlbmd0aC1jYWNo
ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyNTNmYTEwMDdk
Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9BdHRyL2NoaWxkLW5vZGVz
LWxlbmd0aC1jYWNoZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAK
LVRlc3QgZm9yIGJ1ZyAxOTc1OTogQ2hpbGROb2RlTGlzdCBmb3IgYW4gYXR0cmlidXRlIG5vZGUg
aXMgbm90IHByb3Blcmx5IGludmFsaWRhdGVkIGFmdGVyIGFwcGVuZGluZyBhIGNoaWxkLgotCi1Q
YXNzZWQhIQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rl
cy1sZW5ndGgtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hpbGQtbm9k
ZXMtbGVuZ3RoLWNhY2hlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2M2Vm
NWE1ZTFhLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9BdHRyL2NoaWxk
LW5vZGVzLWxlbmd0aC1jYWNoZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0KLWZ1bmN0aW9uIG9uTG9hZCgpCi17Ci0gICAgdmFyIHRo
ZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVEaXYiKTsKLSAgICB2YXIgdGhlQXR0
cnMgPSB0aGVEaXYuYXR0cmlidXRlczsKLQotICAgIHZhciBuYW1lQXR0ciA9IHRoZUF0dHJzLmdl
dE5hbWVkSXRlbSgibmFtZSIpOwotICAgIHZhciBuYW1lQXR0ckNoaWxkTm9kZXMgPSBuYW1lQXR0
ci5jaGlsZE5vZGVzOwotICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCJ0ZXJkYXkiKTsKLSAgICB2YXIgdW51c2VkID0gbmFtZUF0dHJDaGlsZE5vZGVzLmxlbmd0aDsK
LSAgICBuYW1lQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0KLSAgICB2YXIgbmFtZTJBdHRy
ID0gdGhlQXR0cnMuZ2V0TmFtZWRJdGVtKCJuYW1lMiIpOwotICAgIHZhciBuYW1lMkF0dHJDaGls
ZE5vZGVzID0gbmFtZTJBdHRyLmNoaWxkTm9kZXM7Ci0gICAgdmFyIHRleHROb2RlMiA9IGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICBuYW1lMkF0dHIuYXBwZW5kQ2hpbGQo
dGV4dE5vZGUyKTsKLSAgICAgICAgCi0gICAgaWYgKG5hbWVBdHRyQ2hpbGROb2Rlcy5sZW5ndGgg
IT0gbmFtZTJBdHRyQ2hpbGROb2Rlcy5sZW5ndGgpCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiRmFpbGVkOiBuYW1lQXR0ckNoaWxkTm9kZXMu
bGVuZ3RoPSIgKyBuYW1lQXR0ckNoaWxkTm9kZXMubGVuZ3RoICsgIiwgbmFtZTJBdHRyQ2hpbGRO
b2Rlcy5sZW5ndGg9IiArIG5hbWUyQXR0ckNoaWxkTm9kZXMubGVuZ3RoOwotICAgIGVsc2UKLSAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJQYXNz
ZWQhISI7Ci0KLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0aGVEaXYiKSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KLTxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTc1OSI+YnVnIDE5NzU5PC9hPjoKLUNoaWxkTm9kZUxpc3QgZm9y
IGFuIGF0dHJpYnV0ZSBub2RlIGlzIG5vdCBwcm9wZXJseSBpbnZhbGlkYXRlZCBhZnRlciBhcHBl
bmRpbmcgYSBjaGlsZC48L3A+Ci08ZGl2IGlkPSJ0aGVEaXYiIG5hbWU9IlllcyIgbmFtZTI9Illl
cyI+SGVsbG88L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+VGVzdGluZy4uLjwvZGl2PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9pbnZhbGlk
YXRlLW5vZGVsaXN0LWFmdGVyLWF0dHItc2V0dmFsdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vQXR0ci9pbnZhbGlkYXRlLW5vZGVsaXN0LWFmdGVyLWF0dHItc2V0dmFsdWUt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDRlZWI1NGMxMC4u
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9pbnZhbGlkYXRlLW5v
ZGVsaXN0LWFmdGVyLWF0dHItc2V0dmFsdWUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMTIgKzAsMCBAQAotVGhpcyB0ZXN0cyBzZXR0aW5nIHRoZSB2YWx1ZSBvZiBhbiBhdHRyaWJ1
dGUgbm9kZSBhZnRlciBjYWNoaW5nIGNoaWxkTm9kZXMgb2YgdGhlIGF0dHJpYnV0ZSBub2RlLgot
VGhlIGNhY2hlIHNob3VsZCBiZSBjbGVhcmVkIGFuZCBjaGlsZE5vZGVzWzBdLmRhdGEgc2hvdWxk
IHJldHVybiB0aGUgbmV3IHZhbHVlLgotWW91IHNob3VsZCBzZWUgUEFTUyBiZWxvdzoKLQotUEFT
UyBuYW1lQXR0ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBuYW1lQXR0ck5vZGUu
Y2hpbGROb2Rlc1swXSBpcyBvbGRWYWx1ZQotUEFTUyBuYW1lQXR0ck5vZGUuY2hpbGROb2Rlc1sw
XS5kYXRhIGlzICJvbGROYW1lIgotCi1QQVNTIG5hbWVBdHRyTm9kZS52YWx1ZSA9ICduZXdOYW1l
JzsgbmFtZUF0dHJOb2RlLnZhbHVlIGlzICJuZXdOYW1lIgotUEFTUyBuYW1lQXR0ck5vZGUuY2hp
bGROb2Rlc1swXSBpcyBub3Qgb2xkVmFsdWUKLVBBU1MgbmFtZUF0dHJOb2RlLmNoaWxkTm9kZXNb
MF0uZGF0YSBpcyAibmV3TmFtZSIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
QXR0ci9pbnZhbGlkYXRlLW5vZGVsaXN0LWFmdGVyLWF0dHItc2V0dmFsdWUuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0F0dHIvaW52YWxpZGF0ZS1ub2RlbGlzdC1hZnRlci1hdHRyLXNldHZh
bHVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzM2Q2YzY4ZTJmLi4wMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9BdHRyL2ludmFsaWRhdGUtbm9kZWxp
c3QtYWZ0ZXItYXR0ci1zZXR2YWx1ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxib2R5PgotPHA+VGhpcyB0ZXN0cyBzZXR0aW5n
IHRoZSB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUgbm9kZSBhZnRlciBjYWNoaW5nIGNoaWxkTm9kZXMg
b2YgdGhlIGF0dHJpYnV0ZSBub2RlLjxicj4KLVRoZSBjYWNoZSBzaG91bGQgYmUgY2xlYXJlZCBh
bmQgY2hpbGROb2Rlc1swXS5kYXRhIHNob3VsZCByZXR1cm4gdGhlIG5ldyB2YWx1ZS48YnI+Ci1Z
b3Ugc2hvdWxkIHNlZSBQQVNTIGJlbG93OjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0PgotCi12YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwotdmFyIG5hbWVBdHRyTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgnbmFtZScpOwot
dmFyIG9sZFZhbHVlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ29sZE5hbWUnKTsKLW5hbWVB
dHRyTm9kZS5hcHBlbmRDaGlsZChvbGRWYWx1ZSk7Ci1lbGVtZW50LnNldEF0dHJpYnV0ZU5vZGUo
bmFtZUF0dHJOb2RlKTsKLWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0KLXNo
b3VsZEJlKCJuYW1lQXR0ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGgiLCAnMScpOwotc2hvdWxkQmUo
J25hbWVBdHRyTm9kZS5jaGlsZE5vZGVzWzBdJywgJ29sZFZhbHVlJyk7Ci1zaG91bGRCZSgnbmFt
ZUF0dHJOb2RlLmNoaWxkTm9kZXNbMF0uZGF0YScsICcib2xkTmFtZSInKTsKLQotZGVidWcoJycp
Owotc2hvdWxkQmUoIm5hbWVBdHRyTm9kZS52YWx1ZSA9ICduZXdOYW1lJzsgbmFtZUF0dHJOb2Rl
LnZhbHVlIiwgJyJuZXdOYW1lIicpOwotc2hvdWxkTm90QmUoIm5hbWVBdHRyTm9kZS5jaGlsZE5v
ZGVzWzBdIiwgJ29sZFZhbHVlJyk7Ci1zaG91bGRCZSgibmFtZUF0dHJOb2RlLmNoaWxkTm9kZXNb
MF0uZGF0YSIsICcibmV3TmFtZSInKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L25vcm1hbGl6ZS1jcmFzaC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9ub3JtYWxpemUtY3Jhc2guaHRtbApp
bmRleCA2MThjYjBjOTYyNy4uNzM2Yzc4YzIwZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0VsZW1lbnQvbm9ybWFsaXplLWNyYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vRWxlbWVudC9ub3JtYWxpemUtY3Jhc2guaHRtbApAQCAtMjAsNyArMjAsMTAgQEAgZnVu
Y3Rpb24gaGFuZGxlcigpCiB9DQogDQogZWxlbS5zZXRBdHRyaWJ1dGUoImIiLCAiYSIpOw0KLWVs
ZW0uYXR0cmlidXRlc1swXS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiaGki
KSk7DQordHJ5IHsNCisgICAgZWxlbS5hdHRyaWJ1dGVzWzBdLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCJoaSIpKTsNCit9IGNhdGNoKGUpIHsNCit9DQogZWxlbS5hdHRyaWJ1
dGVzWzBdLmFkZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsIGhhbmRsZXIsICBm
YWxzZSk7DQogZWxlbS5ub3JtYWxpemUoKTsNCiA8L3NjcmlwdD4NCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L25vcm1hbGl6ZS1jcmFzaDIuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0VsZW1lbnQvbm9ybWFsaXplLWNyYXNoMi5odG1sCmluZGV4IGZkNDMxZjAw
NTk0Li45MzQxMDI0Y2UyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVu
dC9ub3JtYWxpemUtY3Jhc2gyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVu
dC9ub3JtYWxpemUtY3Jhc2gyLmh0bWwKQEAgLTUsNyArNSwxMiBAQAogZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guIik7CiAgCiB2YXIgdGVzdERpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7Ci10ZXN0RGl2LmF0dHJpYnV0ZXNb
MF0uYXBwZW5kQ2hpbGQobmV3IFRleHQoInRlc3QiKSk7CisKK3RyeSB7CisgICAgdGVzdERpdi5h
dHRyaWJ1dGVzWzBdLmFwcGVuZENoaWxkKG5ldyBUZXh0KCJ0ZXN0IikpOworfSBjYXRjaCAoZSkg
eworfQorCiB0ZXN0RGl2LmNsb25lTm9kZShmYWxzZSk7CiBnYygpOwogdGVzdERpdi5ub3JtYWxp
emUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9l
dmVudC13aGlsZS1yZW1vdmluZy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2V2ZW50LXdoaWxlLXJlbW92aW5nLWF0dHJpYnV0ZS1l
eHBlY3RlZC50eHQKaW5kZXggZGJjMmY0MGY5ZGUuLmYzNzIzMWQ4NjA0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvZXZlbnQtd2hpbGUtcmVtb3Zpbmct
YXR0cmlidXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvZXZlbnQtd2hpbGUtcmVtb3ZpbmctYXR0cmlidXRlLWV4cGVjdGVkLnR4dApAQCAt
Niw3ICs2LDYgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIFBBU1MgQmVmb3JlIGxvYWQgZXZl
bnQgaGFuZGxlZCBmb3Igb3JpZ2luYWwgbGluayBlbGVtZW50LgogUEFTUyBCZWZvcmUgbG9hZCBl
dmVudCBoYW5kbGVkIGZvciBvcmlnaW5hbCBsaW5rIGVsZW1lbnQuCiBQQVNTIEJlZm9yZSBsb2Fk
IGV2ZW50IGhhbmRsZWQgZm9yIG9yaWdpbmFsIGxpbmsgZWxlbWVudC4KLVBBU1MgQmVmb3JlIGxv
YWQgZXZlbnQgaGFuZGxlZCBmb3Igb3JpZ2luYWwgbGluayBlbGVtZW50LgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvZXZlbnQtd2hpbGUtcmVtb3ZpbmctYXR0cmli
dXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvZXZlbnQtd2hp
bGUtcmVtb3ZpbmctYXR0cmlidXRlLmh0bWwKaW5kZXggY2Q3ZTk3ZDBkYWEuLmE0MDhlMjYwZGE5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvZXZlbnQt
d2hpbGUtcmVtb3ZpbmctYXR0cmlidXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTExpbmtFbGVtZW50L2V2ZW50LXdoaWxlLXJlbW92aW5nLWF0dHJpYnV0ZS5odG1sCkBAIC0y
OCwxMSArMjgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB2YXIgb3JpZ0xpbmsgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbGluaycpOwogCiAgICAgdmFyIHJlbEF0dHIgPSBvcmlnTGluay5n
ZXRBdHRyaWJ1dGVOb2RlKCdyZWwnKTsKLSAgICB2YXIgdGV4dE5vZGUgPSByZWxBdHRyLmNoaWxk
Tm9kZXNbMF07Ci0KLSAgICB2YXIgbmV3VGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgiYXV0aG9yIik7Ci0KLSAgICByZWxBdHRyLnJlcGxhY2VDaGlsZChuZXdUZXh0Tm9kZSwgdGV4
dE5vZGUpOworICAgIHJlbEF0dHIudmFsdWUgPSAiYXV0aG9yIjsKIAogICAgIHNldFRpbWVvdXQo
c3RlcDIsIDApOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGQ3ZjYzMTZmZTVkLi5jYjk0OWFhMzNhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dApAQCAtMTkwLDEzICsxOTAsNiBAQCBQQVNTIG11dGF0aW9uc1swXS50
eXBlIGlzICJhdHRyaWJ1dGVzIgogUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAi
ZGF0YS10ZXN0IgogUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKIAotVGVzdCB0
aGF0IG11dGF0aW5nIGFuIGF0dHJpYnV0ZSBieSBhdHRhY2hpbmcgYSBjaGlsZCB0byBhbiBhdHRy
IG5vZGUgZGVsaXZlcnMgbXV0YXRpb24gcmVjb3JkcwotUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlz
IDEKLVBBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBkaXYKLVBBU1MgbXV0YXRpb25zWzBdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCi1QQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJk
YXRhLXRlc3QiCi1QQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAiZm9vIgotCiBUZXN0IHRo
YXQgbXV0YXRpbmcgdmlhIHNldEF0dHJpYnV0ZU5vZGUgZGVsaXZlcnMgbXV0YXRpb24gcmVjb3Jk
cwogUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKIFBBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBp
cyBkaXYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
b2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL29ic2VydmUtYXR0cmlidXRlcy5odG1sCmluZGV4IDM2ZTIzYzVkMzcwLi5jYzU2MDZj
ZTgyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9v
YnNlcnZlLWF0dHJpYnV0ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL29ic2VydmUtYXR0cmlidXRlcy5odG1sCkBAIC04MDMsNDAgKzgwMyw2IEBAIGZ1
bmN0aW9uIHRlc3RNdXRhdGVUaHJvdWdoQXR0ck5vZGVWYWx1ZSgpIHsKICAgICBzdGFydCgpOwog
fQogCi1mdW5jdGlvbiB0ZXN0TXV0YXRlVGhyb3VnaEF0dHJOb2RlQ2hpbGQoKSB7Ci0gICAgdmFy
IG9ic2VydmVyOwotCi0gICAgZnVuY3Rpb24gc3RhcnQoKSB7Ci0gICAgICAgIGRlYnVnKCdUZXN0
IHRoYXQgbXV0YXRpbmcgYW4gYXR0cmlidXRlIGJ5IGF0dGFjaGluZyBhIGNoaWxkIHRvIGFuIGF0
dHIgbm9kZSBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzJyk7Ci0KLSAgICAgICAgbXV0YXRpb25z
ID0gbnVsbDsKLSAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bihtdXRhdGlvbnMpIHsKLSAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOwotICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdkYXRhLXRlc3QnLCAnZm9vJyk7Ci0gICAg
ICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9s
ZFZhbHVlOiB0cnVlIH0pOwotICAgICAgICBkaXYuYXR0cmlidXRlc1snZGF0YS10ZXN0J10uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2JhcicpKTsKLQotICAgICAgICBzZXRU
aW1lb3V0KGZpbmlzaCwgMCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZmluaXNoKCkgewotICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ2RpdicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0uYXR0cmlidXRlTmFtZScsICciZGF0YS10ZXN0IicpOwotICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJyJmb28iJyk7Ci0KLSAgICAgICAgb2JzZXJ2ZXIuZGlz
Y29ubmVjdCgpOwotICAgICAgICBkZWJ1ZygnJyk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0g
ICAgfQotCi0gICAgc3RhcnQoKTsKLX0KLQogZnVuY3Rpb24gdGVzdFNldEFuZFJlbW92ZUF0dHJp
YnV0ZU5vZGUoKSB7CiAgICAgdmFyIG9ic2VydmVyOwogCkBAIC05ODMsNyArOTQ5LDYgQEAgdmFy
IHRlc3RzID0gWwogICAgIHRlc3RTdHlsZUF0dHJpYnV0ZVByb3BlcnR5QWNjZXNzT2xkVmFsdWUs
CiAgICAgdGVzdFN0eWxlQXR0cmlidXRlUHJvcGVydHlBY2Nlc3NJZ25vcmVOb29wLAogICAgIHRl
c3RNdXRhdGVUaHJvdWdoQXR0ck5vZGVWYWx1ZSwKLSAgICB0ZXN0TXV0YXRlVGhyb3VnaEF0dHJO
b2RlQ2hpbGQsCiAgICAgdGVzdFNldEFuZFJlbW92ZUF0dHJpYnV0ZU5vZGUsCiAgICAgdGVzdE1p
eGVkTm9kZUFuZEVsZW1lbnRPcGVyYXRpb25zLAogICAgIHRlc3ROYW1lZE5vZGVNYXBPcGVyYXRp
b25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtY2hhbmdlLW9u
LW11dGF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtY2hh
bmdlLW9uLW11dGF0ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGNiMDNiN2IxOTcwLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRy
aWJ1dGUtY2hhbmdlLW9uLW11dGF0ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSAr
MCwwIEBACi1QQVNTOiBNdXRhdGlvbiBldmVudHMgZGVsYXllZCBkdXJpbmcgQXR0ciBtb2RpZmlj
YXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtY2hhbmdl
LW9uLW11dGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0cmlidXRlLWNoYW5nZS1v
bi1tdXRhdGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU3Mjk5NzQ0NmEu
LjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2F0dHJpYnV0ZS1jaGFuZ2Ut
b24tbXV0YXRlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08c2NyaXB0Pgot
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCi13
aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQotewotICAgIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVB
dHRyaWJ1dGUoImF0dHIiKTsKLSAgICBhdHRyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCJGQUlMIikpOwotICAgIGF0dHIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1v
ZGlmaWVkIiwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IHRoaXMudmFs
dWUgfSwgZmFsc2UpOwotICAgIGF0dHIudmFsdWUgPSAiUEFTUzogTXV0YXRpb24gZXZlbnRzIGRl
bGF5ZWQgZHVyaW5nIEF0dHIgbW9kaWZpY2F0aW9uLiI7Ci19Ci08L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2ltcG9ydC1hdHRyaWJ1dGUtbm9kZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vaW1wb3J0LWF0dHJpYnV0ZS1ub2RlLmh0bWwKaW5kZXggYmI3OGY1
MzBkMWYuLmUzZDZhNmNhOGRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbXBv
cnQtYXR0cmlidXRlLW5vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbXBvcnQt
YXR0cmlidXRlLW5vZGUuaHRtbApAQCAtMTIsOCArMTIsOCBAQCB0cnkgewogICB2YXIgZHN0RWxl
bSA9IHhtbGQyLmRvY3VtZW50RWxlbWVudDsKIAogICB2YXIgaW1wb3J0ZWROb2RlID0geG1sZDIu
aW1wb3J0Tm9kZShzcmNFbGVtLmF0dHJpYnV0ZXNbInRlc3QiXSwgZmFsc2UpOwotICBpZiAoaW1w
b3J0ZWROb2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlICE9ICJiYXoiKQotICAgIHRocm93ICJ3cm9u
ZyBpbXBvcnRlZCBhdHRyaWJ1dGUgY2hpbGQ6ICciICsgaW1wb3J0ZWROb2RlLmZpcnN0Q2hpbGQu
bm9kZVZhbHVlICsgIiciOworICBpZiAoaW1wb3J0ZWROb2RlLm5vZGVWYWx1ZSAhPSAiYmF6IikK
KyAgICB0aHJvdyAid3JvbmcgaW1wb3J0ZWQgYXR0cmlidXRlIGNoaWxkOiAnIiArIGltcG9ydGVk
Tm9kZS5ub2RlVmFsdWUgKyAiJyI7CiAKICAgZHN0RWxlbS5zZXRBdHRyaWJ1dGVOb2RlKGltcG9y
dGVkTm9kZSk7CiAgIGlmIChkc3RFbGVtLmdldEF0dHJpYnV0ZSgidGVzdCIpICE9ICJiYXoiKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5zZXJ0ZWRJbnRvRG9jdW1lbnQtY2hp
bGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2luc2VydGVkSW50b0RvY3VtZW50LWNoaWxk
Lmh0bWwKaW5kZXggMTk0ZWViMTlhYTMuLjFlYTBhOTQzMmU3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9pbnNlcnRlZEludG9Eb2N1bWVudC1jaGlsZC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2luc2VydGVkSW50b0RvY3VtZW50LWNoaWxkLmh0bWwKQEAgLTI4LDgg
KzI4LDcgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKICAgICAKICAgICBhdHRyID0gZG9j
dW1lbnQuY3JlYXRlQXR0cmlidXRlKCJ3aWR0aCIpOwogICAgIG9iamVjdC5zZXRBdHRyaWJ1dGVO
b2RlKGF0dHIpOwotICAgIGF0dHIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
MSkpOwotICAgIGF0dHIuY2hpbGROb2Rlc1swXS5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlUmVt
b3ZlZCIsIGhhbmRsZXIsIGZhbHNlKTsKKyAgICBhdHRyLnZhbHVlID0gIjEiOwogCiAgICAgZW1i
ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJlbWJlZCIpOwogICAgIGVtYmVkLnNldEF0dHJp
YnV0ZSgid2lkdGgiLCAyKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2luc2Vy
dGVkSW50b0RvY3VtZW50LXNpYmxpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2luc2Vy
dGVkSW50b0RvY3VtZW50LXNpYmxpbmcuaHRtbAppbmRleCA3YWVkODU5MmNjOS4uNDlkNDI1ZGZm
NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2luc2VydGVkSW50b0RvY3VtZW50
LXNpYmxpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbnNlcnRlZEludG9Eb2N1
bWVudC1zaWJsaW5nLmh0bWwKQEAgLTMwLDggKzMwLDcgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkKICAgICAKICAgICBhdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCJ3aWR0aCIp
OwogICAgIG9iamVjdC5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpOwotICAgIGF0dHIuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoMSkpOwotICAgIGF0dHIuY2hpbGROb2Rlc1swXS5h
ZGRFdmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZCIsIGhhbmRsZXIsIGZhbHNlKTsKKyAgICBh
dHRyLnZhbHVlICs9ICIxIjsKICAgICAKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG9i
amVjdCk7CiAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uby1hc3NlcnQt
Zm9yLW1hbGZvcm1lZC1qcy11cmwtYXR0cmlidXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL25vLWFzc2VydC1mb3ItbWFsZm9ybWVkLWpzLXVybC1hdHRyaWJ1dGUtZXhwZWN0
ZWQudHh0CmluZGV4IDJjYjhlZmEzYzk5Li5lOTYzNzVhZTgxZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbm8tYXNzZXJ0LWZvci1tYWxmb3JtZWQtanMtdXJsLWF0dHJpYnV0ZS1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm8tYXNzZXJ0LWZvci1tYWxm
b3JtZWQtanMtdXJsLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgMTogU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAn
b3JlbScKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNDogU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
aWRlbnRpZmllciAnb3JlbScKIFRoaXMgdGVzdHMgdGhhdCB3ZSBkbyBub3QgYXNzZXJ0IHdoZW4g
YSBtYWxmb3JtZWQgSlMgVVJMIGlzIHBhc3NlZCB0byB0aGUgJ3NyYycgYXR0cmlidXRlIG9mIGFu
IGlmcmFtZS4gVGhlIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IEFTU0VSVC4KIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm8t
YXNzZXJ0LWZvci1tYWxmb3JtZWQtanMtdXJsLWF0dHJpYnV0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbm8tYXNzZXJ0LWZvci1tYWxmb3JtZWQtanMtdXJsLWF0dHJpYnV0ZS5odG1sCmlu
ZGV4IDIwN2FkNjNlYjlmLi5iNjQyMDQwNWI0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vbm8tYXNzZXJ0LWZvci1tYWxmb3JtZWQtanMtdXJsLWF0dHJpYnV0ZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL25vLWFzc2VydC1mb3ItbWFsZm9ybWVkLWpzLXVybC1hdHRy
aWJ1dGUuaHRtbApAQCAtMTEsMTAgKzExLDEwIEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIGZ1
bmN0aW9uIHJ1blRlc3QoKQogewogICAgIHZhciB0ZXN0RnJhbWUxID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Rlc3RGcmFtZTEnKTsKLSAgICB0ZXN0RnJhbWUxLmdldEF0dHJpYnV0ZU5vZGUo
InNyYyIpLmZpcnN0Q2hpbGQuYXBwZW5kRGF0YSgibWlzc2luZ0Z1bmN0aW9uKHRoaXMpIG9yZW0g
aXBzdW0gZG9zb2xvcmVtIik7CisgICAgdGVzdEZyYW1lMS5nZXRBdHRyaWJ1dGVOb2RlKCJzcmMi
KS52YWx1ZSArPSAibWlzc2luZ0Z1bmN0aW9uKHRoaXMpIG9yZW0gaXBzdW0gZG9zb2xvcmVtIjsK
IAogICAgIHZhciB0ZXN0RnJhbWUyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RGcmFt
ZTInKTsKLSAgICB0ZXN0RnJhbWUyLmdldEF0dHJpYnV0ZU5vZGUoInNyYyIpLmZpcnN0Q2hpbGQu
YXBwZW5kRGF0YSgiamF2YXNjcmlwdDptaXNzaW5nRnVuY3Rpb24odGhpcykgb3JlbSBpcHN1bSBk
b3NvbG9yZW0iKTsKKyAgICB0ZXN0RnJhbWUyLmdldEF0dHJpYnV0ZU5vZGUoInNyYyIpLnZhbHVl
ICs9ICJqYXZhc2NyaXB0Om1pc3NpbmdGdW5jdGlvbih0aGlzKSBvcmVtIGlwc3VtIGRvc29sb3Jl
bSI7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTIyLDQgKzIyLDQgQEAgZnVuY3Rpb24gcnVu
VGVzdCgpCiAgICAgPGlmcmFtZSBpZD0ndGVzdEZyYW1lMScgc3JjPSdqYXZhc2NyaXB0Oic+PC9p
ZnJhbWU+CiAgICAgPGlmcmFtZSBpZD0ndGVzdEZyYW1lMicgc3JjPSdmb28nPjwvaWZyYW1lPgog
PC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vcm1hbGl6ZS1hdHRyaWJ1dGVzLW11dGF0
aW9uLWV2ZW50LWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub3JtYWxpemUtYXR0
cmlidXRlcy1tdXRhdGlvbi1ldmVudC1jcmFzaC5odG1sCmluZGV4IDliMjYwYzliZjdlLi5mZWIx
OGZhZWJlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9ybWFsaXplLWF0dHJp
YnV0ZXMtbXV0YXRpb24tZXZlbnQtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ub3JtYWxpemUtYXR0cmlidXRlcy1tdXRhdGlvbi1ldmVudC1jcmFzaC5odG1sCkBAIC0xMiw3
ICsxMiw3IEBAIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IG11dGF0aW5nIGFuIGVsZW1lbnRzIGF0
dHJpYnV0ZSBtYXAgZHVyaW5nIERPTVN1YnRyZWVNb2RpCiB2YXIgZWwgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKQogZWwuc2V0QXR0cmlidXRlKCdhJywgJ2EnKQogZWwuc2V0QXR0cmli
dXRlKCdiJywgJ2InKQotZWwuYXR0cmlidXRlc1sxXS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgidGVzdCIpKQorZWwuYXR0cmlidXRlc1sxXS52YWx1ZSArPSAidGVzdCIKIGVs
LmF0dHJpYnV0ZXNbMV0uYWRkRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1vZGlmaWVkJywgZnVu
Y3Rpb24oKSB7IGVsLnJlbW92ZUF0dHJpYnV0ZSgnYicpIH0sICBmYWxzZSkKIGVsLm5vcm1hbGl6
ZSgpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NlcmlhbGl6ZS1ub2Rlcy54
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NlcmlhbGl6ZS1ub2Rlcy54aHRtbAppbmRleCBh
ZTQ3OTFkYzhiNC4uMDkyNGFiYzc5OTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NlcmlhbGl6ZS1ub2Rlcy54aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXJpYWxp
emUtbm9kZXMueGh0bWwKQEAgLTI4LDggKzI4LDcgQEAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBmdW5jdGlvbigpIHsKICAgICBjLnNldEF0dHJpYnV0ZU5TKCJ1cm46Zm9vLW5zIiwg
ImZvbzpuYW1lIiwgIm9uZSIpOwogICAgIGMuc2V0QXR0cmlidXRlTlMoInVybjpiYXItbnMiLCAi
YmFyOm5hbWUiLCAidHdvIik7CiAgICAgdmFyIGF0dHIgPSBkLmNyZWF0ZUF0dHJpYnV0ZU5TKG51
bGwsICJuYW1lIik7Ci0gICAgdmFyIHRleHQgPSBkLmNyZWF0ZVRleHROb2RlKCJ0aHJlZSIpOwot
ICAgIGF0dHIuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgYXR0ci52YWx1ZSArPSAidGhyZWUiOwog
ICAgIGMuc2V0QXR0cmlidXRlTm9kZShhdHRyKTsKICAgICAKICAgICB3aW5kb3cuYWxlcnQoImZv
bzpuYW1lIGlzICIgKyBjLmdldEF0dHJpYnV0ZU5TKCJ1cm46Zm9vLW5zIiwgIm5hbWUiKSArICIg
YW5kIHNob3VsZCBiZSBvbmUiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzLURFTklFRC1pZnJhbWUtc3JjLWFsaWFzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1pZnJhbWUtc3JjLWFsaWFzLWV4
cGVjdGVkLnR4dAppbmRleCBhYTNjNzVhMzE4ZC4uOWRjMTgyMjNmYTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1pZnJhbWUtc3JjLWFsaWFz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1E
RU5JRUQtaWZyYW1lLXNyYy1hbGlhcy1leHBlY3RlZC50eHQKQEAgLTIsMTYgKzIsMTAgQEAgQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDg1OiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCIgZnIKIENPTlNPTEUgTUVTU0FHRTogbGluZSA4NTogQmxvY2tlZCBh
IGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5n
IGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIuIFByb3RvY29scywg
ZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgODU6
IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9t
IGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0OjgwODAiLiBQ
cm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDg1OiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9z
dDo4MDgwIi4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLUNPTlNP
TEUgTUVTU0FHRTogbGluZSA4NTogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6
Ly9sb2NhbGhvc3Q6ODA4MCIuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0
Y2guCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjY6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdp
biAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3Jp
Z2luICJodHRwOi8vbG9jYWxob3N0OjgwODAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0
cyBtdXN0IG1hdGNoLgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI3OiBCbG9ja2VkIGEgZnJhbWUg
d2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFt
ZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4MDgwIi4gUHJvdG9jb2xzLCBkb21haW5z
LCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIENPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogQmxvY2tl
ZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNz
aW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIuIFByb3RvY29s
cywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MzY6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBm
cm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0OjgwODAi
LiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDQyOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2Fs
aG9zdDo4MDgwIi4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLUNP
TlNPTEUgTUVTU0FHRTogbGluZSA0NjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0
dHA6Ly9sb2NhbGhvc3Q6ODA4MCIuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3Qg
bWF0Y2guCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNTI6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9y
aWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGgg
b3JpZ2luICJodHRwOi8vbG9jYWxob3N0OjgwODAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBw
b3J0cyBtdXN0IG1hdGNoLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYwOiBCbG9ja2VkIGEgZnJh
bWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBm
cmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4MDgwIi4gUHJvdG9jb2xzLCBkb21h
aW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2NDogQmxv
Y2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNj
ZXNzaW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIuIFByb3Rv
Y29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiBDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNzA6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
IiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0Ojgw
ODAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDc1OiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xv
Y2FsaG9zdDo4MDgwIi4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4K
IFRoaXMgc2NyaXB0IHRlc3RzIGlmIGlmcmFtZS5zcmMgY2FuIGJlIHNldCB0byBhIEphdmFTY3Jp
cHQgVVJMIHZpYSBhbHRlcm5hdGUgRE9NIGludGVyZmFjZXMgKHN1Y2ggYXMgTm9kZS50ZXh0Q29u
dGVudCBvciBOYW1lZE5vZGUuc2V0TmFtZWRJdGVtKS4gVGhlIHRlc3QgaXMgc3VjY2Vzc2Z1bCBp
ZiBubyBhbGVydHMgYXBwZWFyIGFuZCB0aGUgcGFnZSBmaW5pc2hlcyBsb2FkaW5nLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbWFnZS13aXRoLWF0dHItY2hhbmdlLWFmdGVy
LWRlbGV0ZS1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ltYWdl
LXdpdGgtYXR0ci1jaGFuZ2UtYWZ0ZXItZGVsZXRlLWNyYXNoLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE0M2ZhZjNlODkuLjAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3N2Zy9jdXN0b20vaW1hZ2Utd2l0aC1hdHRyLWNoYW5nZS1hZnRlci1kZWxldGUt
Y3Jhc2gtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGVzdCBQYXNz
ZXMgd2hlbiB0aGVyZSBpcyBubyBjcmFzaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1
c3RvbS9pbWFnZS13aXRoLWF0dHItY2hhbmdlLWFmdGVyLWRlbGV0ZS1jcmFzaC5odG1sIGIvTGF5
b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbWFnZS13aXRoLWF0dHItY2hhbmdlLWFmdGVyLWRlbGV0ZS1j
cmFzaC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjhiNGFlZGVhZS4uMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbWFnZS13aXRoLWF0dHItY2hh
bmdlLWFmdGVyLWRlbGV0ZS1jcmFzaC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Ci0gIDxib2R5IGlkPSJib2R5Ij4KLSAgICA8c3ZnIGlkPSJzdmdSb290IiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIj4KLSAgICAgIDxpbWFnZSBoZWlnaHQ9IjQxMCIgaWQ9InN2Z0ltYWdlIiB3
aWR0aD0iNTAzIiB4PSIwIiB5PSIwIiB4bGluazpocmVmPSJyZXNvdXJjZXMvZ3JlZW4tY2hlY2tl
ci5wbmciLz4KLSAgICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewotICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gZm9yY2VH
QygpIHsKLSAgICAgICAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAgICAgIEdD
Q29udHJvbGxlci5jb2xsZWN0KCk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ2MoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHN2Z0ltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InN2Z0ltYWdlIik7Ci0gICAgICAgIGRvY0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3ZnUm9vdCIpOwotICAgICAgICBuZXdUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJ/IFRlc3QgUGFzc2VzIik7Ci0gICAgICAgIHNldFRpbWVvdXQoImNyYXNoKCkiLCAwKTsK
LQotICAgICAgICBmdW5jdGlvbiBjcmFzaCgpIHsKLSAgICAgICAgICBzdmdJbWFnZS5hdHRyaWJ1
dGVzWzVdLnJlcGxhY2VDaGlsZChuZXdUZXh0Tm9kZSwgc3ZnSW1hZ2UuYXR0cmlidXRlc1s1XS5j
aGlsZE5vZGVzWzBdKTsKLSAgICAgICAgICBzdmdJbWFnZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KHN2Z0ltYWdlKTsKLSAgICAgICAgICBkZWxldGUgc3ZnSW1hZ2U7Ci0gICAgICAgICAgZm9yY2VH
QygpOwotICAgICAgICAgIGRvY0VsZW1lbnQuYXBwZW5kQ2hpbGQobmV3VGV4dE5vZGUpOwotICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJvZHkiKS5pbm5lckhUTUwgPSAiVGVzdCBQYXNzZXMgd2hlbiB0aGVyZSBp
cyBubyBjcmFzaCI7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgIDwvc2NyaXB0PgotICAgIDwvc3ZnPgotICA8L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmF2ZXJzYWwvbW96LWJ1ZzU5MDc3
MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmF2ZXJzYWwvbW96LWJ1ZzU5MDc3MS1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MmY3NmE1MmY5Li4wMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy90cmF2ZXJzYWwvbW96LWJ1ZzU5MDc3MS1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSAyOTogdGVzdDE6IGl0ZXJhdG9yIHNob3VsZCBiZSBvbiB0aGUgZmlyc3QgY2hpbGQgYXR0cmli
dXRlOiB0cnVlCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzI6IHRlc3QxOiBpdGVyYXRvciBzaG91
bGQgYmUgb24gdGhlIGF0dHJpYnV0ZSBub3c6IHRydWUKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA0
MjogdGVzdDI6IGl0ZXJhdG9yIHNob3VsZCBiZSBvbiB0aGUgZmlyc3QgY2hpbGQgYXR0cmlidXRl
OiB0cnVlCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNDU6IHRlc3QyOiBpdGVyYXRvciBzaG91bGQg
YmUgb24gdGhlIGF0dHJpYnV0ZSBub3c6IHRydWUKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA1Nzog
dGVzdDM6IGl0ZXJhdG9yIHNob3VsZCBiZSBvbiB0aGUgZmlyc3QgY2hpbGQgYXR0cmlidXRlOiB0
cnVlCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjA6IHRlc3QzOiBpdGVyYXRvciBzaG91bGQgYmUg
b24gdGhlIGF0dHJpYnV0ZSBub3c6IHRydWUKLU1vemlsbGEgQnVnIDU5MDc3MQotCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RyYXZlcnNhbC9tb3otYnVnNTkwNzcxLmh0bWwgYi9MYXlvdXRU
ZXN0cy90cmF2ZXJzYWwvbW96LWJ1ZzU5MDc3MS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiYzc0MDg1YWY2My4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvdHJhdmVy
c2FsL21vei1idWc1OTA3NzEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLTwh
RE9DVFlQRSBIVE1MPgotPGh0bWw+Ci08IS0tCi1UZXN0IGFkYXB0ZWQgZnJvbSBodHRwOi8vbXhy
Lm1vemlsbGEub3JnL21vemlsbGEtY2VudHJhbC9zb3VyY2UvY29udGVudC9iYXNlL3Rlc3QvdGVz
dF9idWc1OTA3NzEuaHRtbAotCi1odHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVn
LmNnaT9pZD01OTA3NzEKLS0tPgotPGhlYWQ+Ci0gIDx0aXRsZT5UZXN0IGZvciBCdWcgNTkwNzcx
PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5PgotPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBz
Oi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTU5MDc3MSI+TW96aWxsYSBC
dWcgNTkwNzcxPC9hPgotPHAgaWQ9ImRpc3BsYXkiPjwvcD4KLTxwcmUgaWQ9InRlc3QiPgotPHNj
cmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KLQotaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQotLyoqIFRlc3QgZm9yIEJ1ZyA1OTA3
NzEgKiovCi0KLWZ1bmN0aW9uIHRlc3QxKCkKLXsKLSAgdmFyIGF0dHIgPSBkb2N1bWVudC5jcmVh
dGVBdHRyaWJ1dGUoImZvbyIpOwotICBhdHRyLnZhbHVlID0gImJhciI7Ci0gIHZhciBuaSA9IGRv
Y3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihhdHRyLCAtMSwgbnVsbCwgZmFsc2UpOwotICBuaS5u
ZXh0Tm9kZSgpOwotICBuaS5uZXh0Tm9kZSgpOwotICBjb25zb2xlLmxvZygidGVzdDE6IGl0ZXJh
dG9yIHNob3VsZCBiZSBvbiB0aGUgZmlyc3QgY2hpbGQgYXR0cmlidXRlOiAiICsgKG5pLnJlZmVy
ZW5jZU5vZGUgPT09IGF0dHIuZmlyc3RDaGlsZCkpOwotCi0gIGF0dHIucmVtb3ZlQ2hpbGQoYXR0
ci5maXJzdENoaWxkKTsKLSAgY29uc29sZS5sb2coInRlc3QxOiBpdGVyYXRvciBzaG91bGQgYmUg
b24gdGhlIGF0dHJpYnV0ZSBub3c6ICIgKyAobmkucmVmZXJlbmNlTm9kZSA9PT0gYXR0cikpOwot
fQotCi1mdW5jdGlvbiB0ZXN0MigpCi17Ci0gIHZhciBhdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0
cmlidXRlKCJmb28iKTsKLSAgYXR0ci52YWx1ZSA9ICJiYXIiOwotICB2YXIgbmkgPSBkb2N1bWVu
dC5jcmVhdGVOb2RlSXRlcmF0b3IoYXR0ciwgLTEsIG51bGwsIGZhbHNlKTsKLSAgbmkubmV4dE5v
ZGUoKTsKLSAgbmkubmV4dE5vZGUoKTsKLSAgY29uc29sZS5sb2coInRlc3QyOiBpdGVyYXRvciBz
aG91bGQgYmUgb24gdGhlIGZpcnN0IGNoaWxkIGF0dHJpYnV0ZTogIiArIChuaS5yZWZlcmVuY2VO
b2RlID09PSBhdHRyLmZpcnN0Q2hpbGQpKTsKLQotICBhdHRyLnZhbHVlID0gIiI7Ci0gIGNvbnNv
bGUubG9nKCJ0ZXN0MjogaXRlcmF0b3Igc2hvdWxkIGJlIG9uIHRoZSBhdHRyaWJ1dGUgbm93OiAi
ICsgKG5pLnJlZmVyZW5jZU5vZGUgPT09IGF0dHIpKTsKLX0KLQotZnVuY3Rpb24gdGVzdDMoKQot
ewotICB2YXIgYXR0ciA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgiZm9vIik7Ci0gIGF0dHIu
dmFsdWUgPSAiYmFyIjsKLSAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgbm9kZS5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpOwotICB2YXIgbmkgPSBkb2N1bWVudC5j
cmVhdGVOb2RlSXRlcmF0b3IoYXR0ciwgLTEsIG51bGwsIGZhbHNlKTsKLSAgbmkubmV4dE5vZGUo
KTsKLSAgbmkubmV4dE5vZGUoKTsKLSAgY29uc29sZS5sb2coInRlc3QzOiBpdGVyYXRvciBzaG91
bGQgYmUgb24gdGhlIGZpcnN0IGNoaWxkIGF0dHJpYnV0ZTogIiArIChuaS5yZWZlcmVuY2VOb2Rl
ID09PSBhdHRyLmZpcnN0Q2hpbGQpKTsKLQotICBub2RlLnNldEF0dHJpYnV0ZSgiZm9vIiwgIiIp
OwotICBjb25zb2xlLmxvZygidGVzdDM6IGl0ZXJhdG9yIHNob3VsZCBiZSBvbiB0aGUgYXR0cmli
dXRlIG5vdzogIiArIChuaS5yZWZlcmVuY2VOb2RlID09PSBhdHRyKSk7Ci19Ci0KLXRlc3QxKCk7
Ci10ZXN0MigpOwotdGVzdDMoKTsKLQotPC9zY3JpcHQ+Ci08L3ByZT4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyLmNwcAppbmRleCAzOTJmMzQyMjA4MC4uZjA0NWZjODJiZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCiBBdHRyOjpBdHRyKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpCi0gICAgOiBDb250YWluZXJOb2RlKGVsZW1lbnQuZG9jdW1l
bnQoKSkKKyAgICA6IE5vZGUoZWxlbWVudC5kb2N1bWVudCgpLCBDcmVhdGVPdGhlcikKICAgICAs
IG1fZWxlbWVudCgmZWxlbWVudCkKICAgICAsIG1fbmFtZShuYW1lKQogewogfQogCiBBdHRyOjpB
dHRyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzdGFuZGFsb25lVmFsdWUpCi0gICAgOiBDb250YWluZXJOb2RlKGRvY3Vt
ZW50KQorICAgIDogTm9kZShkb2N1bWVudCwgQ3JlYXRlT3RoZXIpCiAgICAgLCBtX25hbWUobmFt
ZSkKICAgICAsIG1fc3RhbmRhbG9uZVZhbHVlKHN0YW5kYWxvbmVWYWx1ZSkKIHsKQEAgLTU1LDM2
ICs1NSwxOCBAQCBBdHRyOjpBdHRyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBzdAogCiBSZWY8QXR0cj4gQXR0cjo6Y3Jl
YXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAg
UmVmPEF0dHI+IGF0dHIgPSBhZG9wdFJlZigqbmV3IEF0dHIoZWxlbWVudCwgbmFtZSkpOwotICAg
IGF0dHItPmNyZWF0ZVRleHRDaGlsZCgpOwotICAgIHJldHVybiBhdHRyOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEF0dHIoZWxlbWVudCwgbmFtZSkpOwogfQogCiBSZWY8QXR0cj4gQXR0cjo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZWY8QXR0cj4gYXR0ciA9IGFkb3B0UmVm
KCpuZXcgQXR0cihkb2N1bWVudCwgbmFtZSwgdmFsdWUpKTsKLSAgICBhdHRyLT5jcmVhdGVUZXh0
Q2hpbGQoKTsKLSAgICByZXR1cm4gYXR0cjsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdHRy
KGRvY3VtZW50LCBuYW1lLCB2YWx1ZSkpOwogfQogCiBBdHRyOjp+QXR0cigpCiB7CiB9CiAKLXZv
aWQgQXR0cjo6Y3JlYXRlVGV4dENoaWxkKCkKLXsKLSAgICBBU1NFUlQocmVmQ291bnQoKSk7Ci0g
ICAgaWYgKCF2YWx1ZSgpLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIHRleHROb2RlID0gZG9j
dW1lbnQoKS5jcmVhdGVUZXh0Tm9kZSh2YWx1ZSgpLnN0cmluZygpKTsKLQotICAgICAgICAvLyBU
aGlzIGRvZXMgZXZlcnl0aGluZyBhcHBlbmRDaGlsZCgpIHdvdWxkIGRvIGluIHRoaXMgc2l0dWF0
aW9uIChhc3N1bWluZyBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCB3YXMgc2V0KSwKLSAgICAgICAg
Ly8gYnV0IG11Y2ggbW9yZSBlZmZpY2llbnRseS4KLSAgICAgICAgdGV4dE5vZGUtPnNldFBhcmVu
dE5vZGUodGhpcyk7Ci0gICAgICAgIHNldEZpcnN0Q2hpbGQodGV4dE5vZGUucHRyKCkpOwotICAg
ICAgICBzZXRMYXN0Q2hpbGQodGV4dE5vZGUucHRyKCkpOwotICAgIH0KLX0KLQogRXhjZXB0aW9u
T3I8dm9pZD4gQXR0cjo6c2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KQogewog
ICAgIGF1dG8gcmVzdWx0ID0gY2hlY2tTZXRQcmVmaXgocHJlZml4KTsKQEAgLTEwNCwxNiArODYs
MTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXR0cjo6c2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJlZml4KQogCiB2b2lkIEF0dHI6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiB7Ci0gICAgRXZlbnRRdWV1ZVNjb3BlIHNjb3BlOwotICAgIG1faWdub3JlQ2hpbGRyZW5D
aGFuZ2VkKys7Ci0gICAgcmVtb3ZlQ2hpbGRyZW4oKTsKICAgICBpZiAobV9lbGVtZW50KSB7CiAg
ICAgICAgIFN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRp
b24oKm1fZWxlbWVudCwgcXVhbGlmaWVkTmFtZSgpLCBlbGVtZW50QXR0cmlidXRlKCkudmFsdWUo
KSwgdmFsdWUpOwogICAgICAgICBlbGVtZW50QXR0cmlidXRlKCkuc2V0VmFsdWUodmFsdWUpOwog
ICAgIH0gZWxzZQogICAgICAgICBtX3N0YW5kYWxvbmVWYWx1ZSA9IHZhbHVlOwotICAgIGNyZWF0
ZVRleHRDaGlsZCgpOwotICAgIG1faWdub3JlQ2hpbGRyZW5DaGFuZ2VkLS07CiAKICAgICBpbnZh
bGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoJm1fbmFtZSwgbV9l
bGVtZW50KTsKIH0KQEAgLTEzNiw0MiArMTEzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXR0cjo6
c2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAKIFJlZjxOb2RlPiBBdHRyOjpjbG9u
ZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb24p
CiB7Ci0gICAgUmVmPEF0dHI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBBdHRyKHRhcmdldERvY3Vt
ZW50LCBxdWFsaWZpZWROYW1lKCksIHZhbHVlKCkpKTsKLSAgICBjbG9uZUNoaWxkTm9kZXMoY2xv
bmUpOwotICAgIHJldHVybiBXVEZNb3ZlKGNsb25lKTsKLX0KLQotLy8gRE9NIFNlY3Rpb24gMS4x
LjEKLWJvb2wgQXR0cjo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXBlKSBjb25zdAotewot
ICAgIHJldHVybiB0eXBlID09IFRFWFRfTk9ERTsKLX0KLQotdm9pZCBBdHRyOjpjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKQotewotICAgIGlmIChtX2lnbm9yZUNoaWxkcmVuQ2hh
bmdlZCA+IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIGludmFsaWRhdGVOb2RlTGlzdEFuZENv
bGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycygmcXVhbGlmaWVkTmFtZSgpLCBtX2VsZW1lbnQpOwot
Ci0gICAgU3RyaW5nQnVpbGRlciB2YWx1ZUJ1aWxkZXI7Ci0gICAgVGV4dE5vZGVUcmF2ZXJzYWw6
OmFwcGVuZENvbnRlbnRzKCp0aGlzLCB2YWx1ZUJ1aWxkZXIpOwotCi0gICAgQXRvbWljU3RyaW5n
IG9sZFZhbHVlID0gdmFsdWUoKTsKLSAgICBBdG9taWNTdHJpbmcgbmV3VmFsdWUgPSB2YWx1ZUJ1
aWxkZXIudG9BdG9taWNTdHJpbmcoKTsKLSAgICBpZiAobV9lbGVtZW50KQotICAgICAgICBtX2Vs
ZW1lbnQtPndpbGxNb2RpZnlBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSgpLCBvbGRWYWx1ZSwgbmV3
VmFsdWUpOwotCi0gICAgaWYgKG1fZWxlbWVudCkgewotICAgICAgICBTdHlsZTo6QXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCptX2VsZW1lbnQsIHF1YWxpZmll
ZE5hbWUoKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKLSAgICAgICAgZWxlbWVudEF0dHJpYnV0ZSgp
LnNldFZhbHVlKG5ld1ZhbHVlKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9zdGFuZGFsb25lVmFs
dWUgPSBuZXdWYWx1ZTsKLQotICAgIGlmIChtX2VsZW1lbnQpIHsKLSAgICAgICAgTm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgYWxsb3dlZFNjb3BlOwot
ICAgICAgICBtX2VsZW1lbnQtPmF0dHJpYnV0ZUNoYW5nZWQocXVhbGlmaWVkTmFtZSgpLCBvbGRW
YWx1ZSwgbmV3VmFsdWUpOwotICAgIH0KKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdHRyKHRh
cmdldERvY3VtZW50LCBxdWFsaWZpZWROYW1lKCksIHZhbHVlKCkpKTsKIH0KIAogQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogQXR0cjo6c3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKaW5kZXggZjI3MTU5OTVlMjcuLjA3
MTM2N2E0YmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTMzLDEzICszMyw3IEBAIGNsYXNzIEF0dHJpYnV0
ZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOwogCi0vLyBBdHRyIGNhbiBoYXZlIFRleHQgY2hpbGRyZW4KLS8vIHRoZXJlZm9yZSBpdCBo
YXMgdG8gYmUgYSBmdWxsYmxvd24gTm9kZS4gVGhlIHBsYW4KLS8vIGlzIHRvIGR5bmFtaWNhbGx5
IGFsbG9jYXRlIGEgdGV4dGNoaWxkIGFuZCBzdG9yZSB0aGUKLS8vIHJlc3VsdGluZyBub2RldmFs
dWUgaW4gdGhlIGF0dHJpYnV0ZSB1cG9uCi0vLyBkZXN0cnVjdGlvbi4gaG93ZXZlciwgdGhpcyBp
cyBub3QgeWV0IGltcGxlbWVudGVkLgotCi1jbGFzcyBBdHRyIGZpbmFsIDogcHVibGljIENvbnRh
aW5lck5vZGUgeworY2xhc3MgQXR0ciBmaW5hbCA6IHB1YmxpYyBOb2RlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPEF0dHI+IGNyZWF0ZShFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHN0YXRpYyBSZWY8QXR0cj4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwpAQCAtNjUsMTIgKzU5LDE2IEBAIHB1
YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fbmFtZS5sb2NhbE5hbWUoKTsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJl
Zml4KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9uYW1lLnByZWZpeCgpOyB9CiAKKyAgICAvLyBB
biBBdHRyIE5vZGUgY2Fubm90IGhhdmUgc2libGluZ3Mgb3IgY2hpbGRyZW4uCisgICAgTm9kZSog
cHJldmlvdXNTaWJsaW5nKCkgY29uc3QgPSBkZWxldGU7CisgICAgTm9kZSogbmV4dFNpYmxpbmco
KSBjb25zdCA9IGRlbGV0ZTsKKyAgICBOb2RlKiBmaXJzdENoaWxkKCkgY29uc3QgPSBkZWxldGU7
CisgICAgTm9kZSogbGFzdENoaWxkKCkgY29uc3QgPSBkZWxldGU7CisKIHByaXZhdGU6CiAgICAg
QXR0cihFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIEF0dHIoRG9jdW1lbnQm
LCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAKLSAg
ICB2b2lkIGNyZWF0ZVRleHRDaGlsZCgpOwotCiAgICAgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbmFtZSgpOyB9CiAgICAgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBBVFRSSUJVVEVfTk9ERTsgfQogCkBAIC04Miw5ICs4MCw2IEBAIHByaXZh
dGU6CiAgICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09w
ZXJhdGlvbikgZmluYWw7CiAKICAgICBib29sIGlzQXR0cmlidXRlTm9kZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNv
bnN0IGZpbmFsOwotCi0gICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
KSBmaW5hbDsKIAogICAgIEF0dHJpYnV0ZSYgZWxlbWVudEF0dHJpYnV0ZSgpOwogCkBAIC05NSw3
ICs5MCw2IEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fc3RhbmRhbG9uZVZhbHVlOwog
CiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG1fc3R5bGU7Ci0gICAgdW5zaWdu
ZWQgbV9pZ25vcmVDaGlsZHJlbkNoYW5nZWQgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggNGU1NjRiY2UyZWYu
LmI4YzZiNWU5Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0yMDks
MTAgKzIwOSw2IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVwZGF0ZShjb25zdCBT
dHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwCiAKIHZvaWQgQ2hhcmFjdGVyRGF0
YTo6bm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VTb3Vy
Y2Ugc291cmNlKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBhdXRvIGFzc2VydE5vRXZl
bnREaXNwYXRjaCA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uPigp
OwotI2VuZGlmCi0KICAgICBkb2N1bWVudCgpLmluY0RPTVRyZWVWZXJzaW9uKCk7CiAKICAgICBp
ZiAoIXBhcmVudE5vZGUoKSkKQEAgLTIyNSwxMiArMjIxLDYgQEAgdm9pZCBDaGFyYWN0ZXJEYXRh
Ojpub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJj
ZSBzb3UKICAgICAgICAgc291cmNlCiAgICAgfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICAvLyBBdHRyaWJ1dGUgQ2hhcmFjdGVyRGF0YSBpcyBleHBlY3RlZCB0byBmaXJlIGV2ZW50cy4K
LSAgICBpZiAoaXM8QXR0cj4oKnBhcmVudE5vZGUoKSkpCi0gICAgICAgIGFzc2VydE5vRXZlbnRE
aXNwYXRjaCA9IG51bGxwdHI7Ci0jZW5kaWYKLQogICAgIHBhcmVudE5vZGUoKS0+Y2hpbGRyZW5D
aGFuZ2VkKGNoYW5nZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhOWJmY2JhNDdhNi4uOTZm
MmViMTZmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE0NjksMTQgKzE0NjksMTkgQEAgc3RhdGlj
IHZvaWQgYXBwZW5kVGV4dENvbnRlbnQoY29uc3QgTm9kZSogbm9kZSwgYm9vbCBjb252ZXJ0QlJz
VG9OZXdsaW5lcywgYm9vbCYKICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKICAg
ICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKICAgICAgICAgaXNOdWxsU3RyaW5nID0gZmFsc2U7
Ci0gICAgICAgIGNvbnRlbnQuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IENoYXJhY3RlckRhdGEq
Pihub2RlKS0+ZGF0YSgpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoZG93bmNhc3Q8Q2hhcmFj
dGVyRGF0YT4oKm5vZGUpLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBOb2Rl
OjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CiAgICAgICAgIGlzTnVsbFN0cmluZyA9IGZh
bHNlOwotICAgICAgICBjb250ZW50LmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24qPihub2RlKS0+ZGF0YSgpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoZG93
bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSkuZGF0YSgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgCisgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKKyAgICAgICAgaXNOdWxs
U3RyaW5nID0gZmFsc2U7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKGRvd25jYXN0PEF0dHI+KCpu
b2RlKS52YWx1ZSgpKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIE5vZGU6OkVMRU1FTlRf
Tk9ERToKICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpICYmIGNvbnZlcnRCUnNU
b05ld2xpbmVzKSB7CiAgICAgICAgICAgICBpc051bGxTdHJpbmcgPSBmYWxzZTsKQEAgLTE0ODQs
NyArMTQ4OSw2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFRleHRDb250ZW50KGNvbnN0IE5vZGUqIG5v
ZGUsIGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMsIGJvb2wmCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIE5vZGU6OkFUVFJJQlVU
RV9OT0RFOgogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKICAgICAgICAg
aXNOdWxsU3RyaW5nID0gZmFsc2U7CiAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcAppbmRleCA1ZGNiZDY3MDdlNS4uZjQ3ZDIyZDg0YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcApAQCAtNTM2LDYgKzUzNiw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZD
b250ZW50c0luTm9kZShOb2RlJiBub2RlKQogICAgIC8vIFRoaXMgc3dpdGNoIHN0YXRlbWVudCBt
dXN0IGJlIGNvbnNpc3RlbnQgd2l0aCB0aGF0IG9mIFJhbmdlOjpwcm9jZXNzQ29udGVudHNCZXR3
ZWVuT2Zmc2V0cy4KICAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUoKSkgewogICAgIGNhc2UgTm9k
ZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAg
ICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgogICAgIGNhc2UgTm9k
ZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgpAQCAtNTQzLDcgKzU0NCw2IEBAIHN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgbGVuZ3RoT2ZDb250ZW50c0luTm9kZShOb2RlJiBub2RlKQogICAgIGNhc2UgTm9k
ZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8
Q2hhcmFjdGVyRGF0YT4obm9kZSkubGVuZ3RoKCk7CiAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05P
REU6Ci0gICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAgICBjYXNlIE5vZGU6OkRPQ1VN
RU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4obm9kZSkuY291bnRDaGlsZE5vZGVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCmluZGV4IGFkMGM0NzU0YjgyLi5hYjRlOTU0MzM4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoVXRpbC5jcHAKQEAgLTY1LDEyICs2NSwxMSBAQCBib29sIGlzVmFs
aWRDb250ZXh0Tm9kZShOb2RlKiBub2RlKQogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6
OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKKyAgICAgICAgY2FzZSBOb2RlOjpURVhUX05P
REU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVO
VF9GUkFHTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6
Ci0gICAgICAgICAgICByZXR1cm4gIShub2RlLT5wYXJlbnROb2RlKCkgJiYgbm9kZS0+cGFyZW50
Tm9kZSgpLT5pc0F0dHJpYnV0ZU5vZGUoKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309136</attachid>
            <date>2017-05-04 20:36:40 -0700</date>
            <delta_ts>2017-05-05 12:26:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171688-20170504203638.patch</filename>
            <type>text/plain</type>
            <size>462865</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI1NWMxZmU3ZWFlZWZl
YTBkY2E4NDQyMjFhMDljMmFiNDVhYTE4Mi4uYTc3YTc1MGU0ZWE3YTA3ZmY1NjAxMTk0YzQxYzM5
NzA0ZWYwYTk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA1LTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXR0ciBOb2RlcyBzaG91bGQg
bm90IGhhdmUgY2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MTY4OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE5OTg0MTI+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXR0ciBOb2RlcyBz
aG91bGQgbm90IGhhdmUgY2hpbGRyZW4gYXMgcGVyIHRoZSBsYXRlc3QgRE9NIHNwZWNpZmljYXRp
b246CisgICAgICAgIC0gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNpbnRlcmZhY2UtYXR0
cgorICAgICAgICAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLWF0dHItdmFsdWUK
KyAgICAgICAgLSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtbm9kZS1lbnN1
cmUtcHJlLWluc2VydGlvbi12YWxpZGl0eSAoU3RlcCAxKQorCisgICAgICAgIEZpcmVmb3ggYW5k
IENocm9tZSBib3RoIGhhdmUgYmVlbiBtYXRjaGluZyB0aGUgRE9NIHNwZWNpZmljYXRpb24gZm9y
IGEgd2hpbGUgc28gSSB0aGluaworICAgICAgICB3ZSBzaG91bGQgZG8gdGhlIHNhbWUuIFRoaXMg
YWxpZ25zIHVzIHdpdGggb3RoZXIgYnJvd3NlcnMsIHNpbXBsaWZpZXMgdGhlIGNvZGUsIGlzCisg
ICAgICAgIG1vcmUgZWZmaWNpZW50IGFuZCB0aGUgY29kZSBiZWluZyByZW1vdmVkIGhhcyBiZWVu
IHByb25lIHRvIHNlY3VyaXR5IGJ1Z3MuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vQXR0ci9j
YW5ub3QtaGF2ZS1jaGlsZHJlbi5odG1sCisKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdHRyOjpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OkF0dHI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBdHRyOjpjbG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAg
ICAgLSBIYXZlIEF0dHIgc3ViY2xhc3MgTm9kZSBpbnN0ZWFkIG9mIENvbnRhaW5lck5vZGUgYXMg
aXQgY2FuIG5vIGxvbmdlciBoYXZlIGNoaWxkcmVuLgorICAgICAgICAtIERyb3AgbG9naWMgdG8g
ZGVhbGluZyB3aXRoIGNoaWxkcmVuIC8gY3JlYXRpbmcgYSBUZXh0IGNoaWxkLgorCisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YTo6bm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UpOgorICAgICAgICBEcm9wIHVzZWxlc3MgY2hlY2sg
Zm91bmQgYnkgdGhlIGNvbXBpbGVyLiBwYXJlbnROb2RlKCkgY2FuIG5vIGxvbmdlciBiZSBhbiBB
dHRyIG5vZGUuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIGFwcGVuZFRleHRDb250ZW50KCkgaXMgY2FsbGVk
IGJ5IE5vZGUuVGV4dENvbnRlbnQoKS4gRm9yIEF0dHIgTm9kZXMsIHdlIHNob3VsZCBubyBsb25n
ZXIgdHJhdmVyc2UKKyAgICAgICAgaXRzIHN1YnRyZWUgdG8gZ2F0aGVyIFRleHQgTm9kZXMuIElu
c3RlYWQsIHdlIG5vdyByZXR1cm4gQXR0ci52YWx1ZSwgYXMgcGVyIHRoZSBzcGVjaWZpY2F0aW9u
OgorICAgICAgICAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLW5vZGUtdGV4dGNv
bnRlbnQKKworICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZW5n
dGhPZkNvbnRlbnRzSW5Ob2RlKToKKyAgICAgICAgQXMgcGVyIGh0dHBzOi8vZG9tLnNwZWMud2hh
dHdnLm9yZy8jY29uY2VwdC1ub2RlLWxlbmd0aCwgd2Ugc2hvdWxkIHJldHVybiB0aGUgbnVtYmVy
IG9mIGNoaWxkcmVuCisgICAgICAgIGZvciBBdHRyIE5vZGVzLCB3aGljaCB3aWxsIGFsd2F5cyBi
ZSAwLgorCisgICAgICAgICogeG1sL1hQYXRoVXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
UGF0aDo6aXNWYWxpZENvbnRleHROb2RlKToKKyAgICAgICAgQWx3YXlzIHJldHVybiB0cnVlIGZv
ciBURVhUX05PREUgYXMgdGhlICEobm9kZS0+cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5v
ZGUoKS0+aXNBdHRyaWJ1dGVOb2RlKCkpCisgICAgICAgIGNoZWNrIHdpbGwgYWxzbyB3aXRoIHRy
dWUgbm93LiBUaGlzIGlzIGJlY2F1c2UgYSBwYXJlbnROb2RlKCkgY2Fubm90IGJlIGFuIEF0dHJp
YnV0ZSBOb2RlLgorCiAyMDE3LTA1LTA0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChTYWZhcmkgMTAuMSk6IFdoZW4gJ3RyYW5zaXRpb24n
IGNvbnRhaW5zIC1tcy10cmFuc2Zvcm0sIHRyYW5zZm9ybS1vcmlnaW4gaXMgYWxzbyB0cmFuc2l0
aW9uZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmNwcAppbmRleCAzOTJmMzQyMjA4MDdlYzM2N2I5N2FlYzE1NTBkZmE4
MDlhNjczZTNiLi5mMDQ1ZmM4MmJlOGEwMjA5YWE5ZjgyMWY3N2U5OWJiNzE5NDkxZmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0F0dHIuY3BwCkBAIC00MCwxNCArNDAsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQXR0cjo6QXR0cihFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQotICAgIDogQ29udGFpbmVyTm9kZShlbGVtZW50LmRv
Y3VtZW50KCkpCisgICAgOiBOb2RlKGVsZW1lbnQuZG9jdW1lbnQoKSwgQ3JlYXRlT3RoZXIpCiAg
ICAgLCBtX2VsZW1lbnQoJmVsZW1lbnQpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKIH0KIAogQXR0
cjo6QXR0cihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgc3RhbmRhbG9uZVZhbHVlKQotICAgIDogQ29udGFpbmVyTm9kZShk
b2N1bWVudCkKKyAgICA6IE5vZGUoZG9jdW1lbnQsIENyZWF0ZU90aGVyKQogICAgICwgbV9uYW1l
KG5hbWUpCiAgICAgLCBtX3N0YW5kYWxvbmVWYWx1ZShzdGFuZGFsb25lVmFsdWUpCiB7CkBAIC01
NSwzNiArNTUsMTggQEAgQXR0cjo6QXR0cihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgc3QKIAogUmVmPEF0dHI+IEF0dHI6
OmNyZWF0ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewot
ICAgIFJlZjxBdHRyPiBhdHRyID0gYWRvcHRSZWYoKm5ldyBBdHRyKGVsZW1lbnQsIG5hbWUpKTsK
LSAgICBhdHRyLT5jcmVhdGVUZXh0Q2hpbGQoKTsKLSAgICByZXR1cm4gYXR0cjsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBdHRyKGVsZW1lbnQsIG5hbWUpKTsKIH0KIAogUmVmPEF0dHI+IEF0
dHI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmVmPEF0dHI+IGF0dHIgPSBhZG9w
dFJlZigqbmV3IEF0dHIoZG9jdW1lbnQsIG5hbWUsIHZhbHVlKSk7Ci0gICAgYXR0ci0+Y3JlYXRl
VGV4dENoaWxkKCk7Ci0gICAgcmV0dXJuIGF0dHI7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXR0cihkb2N1bWVudCwgbmFtZSwgdmFsdWUpKTsKIH0KIAogQXR0cjo6fkF0dHIoKQogewogfQog
Ci12b2lkIEF0dHI6OmNyZWF0ZVRleHRDaGlsZCgpCi17Ci0gICAgQVNTRVJUKHJlZkNvdW50KCkp
OwotICAgIGlmICghdmFsdWUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byB0ZXh0Tm9kZSA9
IGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUodmFsdWUoKS5zdHJpbmcoKSk7Ci0KLSAgICAgICAg
Ly8gVGhpcyBkb2VzIGV2ZXJ5dGhpbmcgYXBwZW5kQ2hpbGQoKSB3b3VsZCBkbyBpbiB0aGlzIHNp
dHVhdGlvbiAoYXNzdW1pbmcgbV9pZ25vcmVDaGlsZHJlbkNoYW5nZWQgd2FzIHNldCksCi0gICAg
ICAgIC8vIGJ1dCBtdWNoIG1vcmUgZWZmaWNpZW50bHkuCi0gICAgICAgIHRleHROb2RlLT5zZXRQ
YXJlbnROb2RlKHRoaXMpOwotICAgICAgICBzZXRGaXJzdENoaWxkKHRleHROb2RlLnB0cigpKTsK
LSAgICAgICAgc2V0TGFzdENoaWxkKHRleHROb2RlLnB0cigpKTsKLSAgICB9Ci19Ci0KIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEF0dHI6OnNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkK
IHsKICAgICBhdXRvIHJlc3VsdCA9IGNoZWNrU2V0UHJlZml4KHByZWZpeCk7CkBAIC0xMDQsMTYg
Kzg2LDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF0dHI6OnNldFByZWZpeChjb25zdCBBdG9taWNT
dHJpbmcmIHByZWZpeCkKIAogdm9pZCBBdHRyOjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQogewotICAgIEV2ZW50UXVldWVTY29wZSBzY29wZTsKLSAgICBtX2lnbm9yZUNoaWxk
cmVuQ2hhbmdlZCsrOwotICAgIHJlbW92ZUNoaWxkcmVuKCk7CiAgICAgaWYgKG1fZWxlbWVudCkg
ewogICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxp
ZGF0aW9uKCptX2VsZW1lbnQsIHF1YWxpZmllZE5hbWUoKSwgZWxlbWVudEF0dHJpYnV0ZSgpLnZh
bHVlKCksIHZhbHVlKTsKICAgICAgICAgZWxlbWVudEF0dHJpYnV0ZSgpLnNldFZhbHVlKHZhbHVl
KTsKICAgICB9IGVsc2UKICAgICAgICAgbV9zdGFuZGFsb25lVmFsdWUgPSB2YWx1ZTsKLSAgICBj
cmVhdGVUZXh0Q2hpbGQoKTsKLSAgICBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZC0tOwogCiAgICAg
aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCZtX25hbWUs
IG1fZWxlbWVudCk7CiB9CkBAIC0xMzYsNDIgKzExMyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF0
dHI6OnNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogCiBSZWY8Tm9kZT4gQXR0cjo6
Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3BlcmF0
aW9uKQogewotICAgIFJlZjxBdHRyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgQXR0cih0YXJnZXRE
b2N1bWVudCwgcXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSgpKSk7Ci0gICAgY2xvbmVDaGlsZE5vZGVz
KGNsb25lKTsKLSAgICByZXR1cm4gV1RGTW92ZShjbG9uZSk7Ci19Ci0KLS8vIERPTSBTZWN0aW9u
IDEuMS4xCi1ib29sIEF0dHI6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkgY29uc3QK
LXsKLSAgICByZXR1cm4gdHlwZSA9PSBURVhUX05PREU7Ci19Ci0KLXZvaWQgQXR0cjo6Y2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikKLXsKLSAgICBpZiAobV9pZ25vcmVDaGlsZHJl
bkNoYW5nZWQgPiAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnZhbGlkYXRlTm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3RvcnMoJnF1YWxpZmllZE5hbWUoKSwgbV9lbGVtZW50
KTsKLQotICAgIFN0cmluZ0J1aWxkZXIgdmFsdWVCdWlsZGVyOwotICAgIFRleHROb2RlVHJhdmVy
c2FsOjphcHBlbmRDb250ZW50cygqdGhpcywgdmFsdWVCdWlsZGVyKTsKLQotICAgIEF0b21pY1N0
cmluZyBvbGRWYWx1ZSA9IHZhbHVlKCk7Ci0gICAgQXRvbWljU3RyaW5nIG5ld1ZhbHVlID0gdmFs
dWVCdWlsZGVyLnRvQXRvbWljU3RyaW5nKCk7Ci0gICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAg
bV9lbGVtZW50LT53aWxsTW9kaWZ5QXR0cmlidXRlKHF1YWxpZmllZE5hbWUoKSwgb2xkVmFsdWUs
IG5ld1ZhbHVlKTsKLQotICAgIGlmIChtX2VsZW1lbnQpIHsKLSAgICAgICAgU3R5bGU6OkF0dHJp
YnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqbV9lbGVtZW50LCBxdWFs
aWZpZWROYW1lKCksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7Ci0gICAgICAgIGVsZW1lbnRBdHRyaWJ1
dGUoKS5zZXRWYWx1ZShuZXdWYWx1ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fc3RhbmRhbG9u
ZVZhbHVlID0gbmV3VmFsdWU7Ci0KLSAgICBpZiAobV9lbGVtZW50KSB7Ci0gICAgICAgIE5vRXZl
bnREaXNwYXRjaEFzc2VydGlvbjo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGFsbG93ZWRTY29w
ZTsKLSAgICAgICAgbV9lbGVtZW50LT5hdHRyaWJ1dGVDaGFuZ2VkKHF1YWxpZmllZE5hbWUoKSwg
b2xkVmFsdWUsIG5ld1ZhbHVlKTsKLSAgICB9CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXR0
cih0YXJnZXREb2N1bWVudCwgcXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSgpKSk7CiB9CiAKIENTU1N0
eWxlRGVjbGFyYXRpb24qIEF0dHI6OnN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCmluZGV4IGYyNzE1OTk1ZTI3
N2YwZjFkOTVlNTVmMjE1MGFlMTFmMWVkZmQ0YjIuLjcyYTYwYjZmZjYzZWMwYTE0YWIyODA2Yjky
YWRjZGY4ODc4Y2Q2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtMzMsMTMgKzMzLDcgQEAgY2xhc3MgQXR0
cmlidXRlOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIE11dGFibGVTdHlsZVBy
b3BlcnRpZXM7CiAKLS8vIEF0dHIgY2FuIGhhdmUgVGV4dCBjaGlsZHJlbgotLy8gdGhlcmVmb3Jl
IGl0IGhhcyB0byBiZSBhIGZ1bGxibG93biBOb2RlLiBUaGUgcGxhbgotLy8gaXMgdG8gZHluYW1p
Y2FsbHkgYWxsb2NhdGUgYSB0ZXh0Y2hpbGQgYW5kIHN0b3JlIHRoZQotLy8gcmVzdWx0aW5nIG5v
ZGV2YWx1ZSBpbiB0aGUgYXR0cmlidXRlIHVwb24KLS8vIGRlc3RydWN0aW9uLiBob3dldmVyLCB0
aGlzIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCi0KLWNsYXNzIEF0dHIgZmluYWwgOiBwdWJsaWMg
Q29udGFpbmVyTm9kZSB7CitjbGFzcyBBdHRyIGZpbmFsIDogcHVibGljIE5vZGUgewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8QXR0cj4gY3JlYXRlKEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgc3RhdGljIFJlZjxBdHRyPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CkBAIC02OSw4ICs2Myw2IEBA
IHByaXZhdGU6CiAgICAgQXR0cihFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IEF0dHIoRG9jdW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSk7CiAKLSAgICB2b2lkIGNyZWF0ZVRleHRDaGlsZCgpOwotCiAgICAgU3RyaW5nIG5v
ZGVOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbmFtZSgpOyB9CiAgICAgTm9kZVR5cGUgbm9k
ZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBVFRSSUJVVEVfTk9ERTsgfQogCkBAIC04Miw5
ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3Vt
ZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgZmluYWw7CiAKICAgICBib29sIGlzQXR0cmlidXRlTm9k
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGNoaWxkVHlwZUFsbG93
ZWQoTm9kZVR5cGUpIGNvbnN0IGZpbmFsOwotCi0gICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKIAogICAgIEF0dHJpYnV0ZSYgZWxlbWVudEF0dHJpYnV0
ZSgpOwogCkBAIC05NSw3ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fc3Rh
bmRhbG9uZVZhbHVlOwogCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG1fc3R5
bGU7Ci0gICAgdW5zaWduZWQgbV9pZ25vcmVDaGlsZHJlbkNoYW5nZWQgeyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5k
ZXggNGU1NjRiY2UyZWZjODhmZTY1ZTlhY2JjOTRhMzNmNGQ2OGI4M2NlZC4uYjhjNmI1ZTlmODc1
YzNlYjgzMzg3ZDc0MzIzZjA2MWNjNmU2Njk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmNwcApAQCAtMjA5LDEwICsyMDksNiBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFB
bmRVcGRhdGUoY29uc3QgU3RyaW5nJiBuZXdEYXRhLCB1bnNpZ25lZCBvZmZzZXRPZlJlcAogCiB2
b2lkIENoYXJhY3RlckRhdGE6Om5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlU291cmNlIHNvdXJjZSkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAg
YXV0byBhc3NlcnROb0V2ZW50RGlzcGF0Y2ggPSBzdGQ6Om1ha2VfdW5pcXVlPE5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbj4oKTsKLSNlbmRpZgotCiAgICAgZG9jdW1lbnQoKS5pbmNET01UcmVlVmVy
c2lvbigpOwogCiAgICAgaWYgKCFwYXJlbnROb2RlKCkpCkBAIC0yMjUsMTIgKzIyMSw2IEBAIHZv
aWQgQ2hhcmFjdGVyRGF0YTo6bm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVyTm9kZTo6
Q2hpbGRDaGFuZ2VTb3VyY2Ugc291CiAgICAgICAgIHNvdXJjZQogICAgIH07CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECi0gICAgLy8gQXR0cmlidXRlIENoYXJhY3RlckRhdGEgaXMgZXhwZWN0ZWQg
dG8gZmlyZSBldmVudHMuCi0gICAgaWYgKGlzPEF0dHI+KCpwYXJlbnROb2RlKCkpKQotICAgICAg
ICBhc3NlcnROb0V2ZW50RGlzcGF0Y2ggPSBudWxscHRyOwotI2VuZGlmCi0KICAgICBwYXJlbnRO
b2RlKCktPmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXgg
YTliZmNiYTQ3YTZiMDdjODAyNDE2MmRhYWNhYjU2MWQ1NjEzOGEwZC4uOTZmMmViMTZmZmI4ZDYy
Y2IzMmVhZWJhNWVjMDQwMDc1YTg3YjAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTQ2OSwxNCAr
MTQ2OSwxOSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRUZXh0Q29udGVudChjb25zdCBOb2RlKiBub2Rl
LCBib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzLCBib29sJgogICAgIGNhc2UgTm9kZTo6Q0RBVEFf
U0VDVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgogICAgICAgICBpc051
bGxTdHJpbmcgPSBmYWxzZTsKLSAgICAgICAgY29udGVudC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29u
c3QgQ2hhcmFjdGVyRGF0YSo+KG5vZGUpLT5kYXRhKCkpOworICAgICAgICBjb250ZW50LmFwcGVu
ZChkb3duY2FzdDxDaGFyYWN0ZXJEYXRhPigqbm9kZSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKICAgICAgICAg
aXNOdWxsU3RyaW5nID0gZmFsc2U7Ci0gICAgICAgIGNvbnRlbnQuYXBwZW5kKHN0YXRpY19jYXN0
PGNvbnN0IFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KG5vZGUpLT5kYXRhKCkpOworICAgICAgICBj
b250ZW50LmFwcGVuZChkb3duY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpub2RlKS5kYXRh
KCkpOwogICAgICAgICBicmVhazsKICAgICAKKyAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RF
OgorICAgICAgICBpc051bGxTdHJpbmcgPSBmYWxzZTsKKyAgICAgICAgY29udGVudC5hcHBlbmQo
ZG93bmNhc3Q8QXR0cj4oKm5vZGUpLnZhbHVlKCkpOworICAgICAgICBicmVhazsKKwogICAgIGNh
c2UgTm9kZTo6RUxFTUVOVF9OT0RFOgogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShiclRh
ZykgJiYgY29udmVydEJSc1RvTmV3bGluZXMpIHsKICAgICAgICAgICAgIGlzTnVsbFN0cmluZyA9
IGZhbHNlOwpAQCAtMTQ4NCw3ICsxNDg5LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kVGV4dENvbnRl
bnQoY29uc3QgTm9kZSogbm9kZSwgYm9vbCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgYm9vbCYKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNh
c2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVO
VF9OT0RFOgogICAgICAgICBpc051bGxTdHJpbmcgPSBmYWxzZTsKICAgICAgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDVkY2JkNjcwN2U1ZjZhZjYyNDBiYWRl
ZWZiZTFkYzY4NzJiOGVjZTAuLmY0N2QyMmQ4NGMxMTllMmNkMTBkZDdkODMxNThkZGIwYjllNTAw
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtNTM2LDYgKzUzNiw3IEBAIHN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgbGVuZ3RoT2ZDb250ZW50c0luTm9kZShOb2RlJiBub2RlKQogICAgIC8vIFRoaXMg
c3dpdGNoIHN0YXRlbWVudCBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCB0aGF0IG9mIFJhbmdlOjpw
cm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cy4KICAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUo
KSkgewogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6
QVRUUklCVVRFX05PREU6CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgTm9kZTo6VEVYVF9O
T0RFOgogICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgpAQCAtNTQzLDcgKzU0NCw2
IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZDb250ZW50c0luTm9kZShOb2RlJiBu
b2RlKQogICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgogICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8Q2hhcmFjdGVyRGF0YT4obm9kZSkubGVuZ3RoKCk7CiAgICAgY2Fz
ZSBOb2RlOjpFTEVNRU5UX05PREU6Ci0gICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFH
TUVOVF9OT0RFOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4obm9kZSku
Y291bnRDaGlsZE5vZGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhV
dGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCmluZGV4IGFkMGM0NzU0
YjgyMDk2NDY1NThkZmVhY2IyMzc5NDdiYzQ4MmEyZTIuLmFiNGU5NTQzMzhmMzIwOTQxMmQ0NGQy
ODcxYmJmZDFmN2Y0MzY2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0
aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCkBAIC02NSwxMiAr
NjUsMTEgQEAgYm9vbCBpc1ZhbGlkQ29udGV4dE5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToK
ICAgICAgICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CisgICAgICAg
IGNhc2UgTm9kZTo6VEVYVF9OT0RFOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpE
T0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNh
c2UgTm9kZTo6VEVYVF9OT0RFOgotICAgICAgICAgICAgcmV0dXJuICEobm9kZS0+cGFyZW50Tm9k
ZSgpICYmIG5vZGUtPnBhcmVudE5vZGUoKS0+aXNBdHRyaWJ1dGVOb2RlKCkpOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTFjYzA5
NzA5YTJkMTM3YTc3ZDEzNTJkMTAwZWQ0MjA1YWU4NTM1ZC4uYmU5Njc5OGNhYmFkMGJhZTY0ZDg2
YTlkNjcwNmEzYWJiNDI2NmI5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTA1LTA0ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXR0ciBOb2RlcyBzaG91
bGQgbm90IGhhdmUgY2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTY4OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE5OTg0MTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9BdHRyL2Nhbm5vdC1oYXZlLWNoaWxkcmVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vQXR0ci9jYW5ub3QtaGF2ZS1jaGlsZHJlbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLiBJIGhhdmUgdmVyaWZpZWQgdGhhdCB0aGlzIHRl
c3QgcGFzc2VzIGluIGJvdGgKKyAgICAgICAgRmlyZWZveCBhbmQgQ2hyb21lLgorCisgICAgICAg
ICogZG9tL2h0bWwvbGV2ZWwxLyo6IFJlbW92ZWQgbGVnYWN5IC8gb3V0ZGF0ZWQgdGVzdHMuCisg
ICAgICAgICogZG9tL3hodG1sL2xldmVsMS8qOiBSZW1vdmVkIGxlZ2FjeSAvIG91dGRhdGVkIHRl
c3RzLgorCisgICAgICAgICogZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1jYWNoZS1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1jYWNo
ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZG9tL0F0dHIvY2hpbGQtbm9kZXMtbGVu
Z3RoLWNhY2hlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9BdHRy
L2NoaWxkLW5vZGVzLWxlbmd0aC1jYWNoZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0F0dHIvaW52YWxpZGF0ZS1ub2RlbGlzdC1hZnRlci1hdHRyLXNldHZhbHVlLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9BdHRyL2ludmFsaWRhdGUtbm9kZWxp
c3QtYWZ0ZXItYXR0ci1zZXR2YWx1ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZG9t
L2F0dHJpYnV0ZS1jaGFuZ2Utb24tbXV0YXRlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9hdHRyaWJ1dGUtY2hhbmdlLW9uLW11dGF0ZS5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIHN2Zy9jdXN0b20vaW1hZ2Utd2l0aC1hdHRyLWNoYW5nZS1hZnRlci1kZWxldGUt
Y3Jhc2gtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vaW1hZ2Ut
d2l0aC1hdHRyLWNoYW5nZS1hZnRlci1kZWxldGUtY3Jhc2guaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB0cmF2ZXJzYWwvbW96LWJ1ZzU5MDc3MS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogdHJhdmVyc2FsL21vei1idWc1OTA3NzEuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgUmVt
b3ZlZCBzb21lIG91dGRhdGVkIHRlc3RzLgorCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVu
dHMvcmVhY3Rpb25zLWZvci13ZWJraXQtZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9jdXN0b20tZWxlbWVudHMvcmVhY3Rpb25zLWZvci13ZWJraXQtZXh0ZW5zaW9ucy5o
dG1sOgorICAgICAgICAqIGZhc3QvZG9tL0F0dHIvY2hhbmdlLWlkLXZpYS1hdHRyLW5vZGUtdmFs
dWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0F0dHIvY2hhbmdlLWlkLXZpYS1h
dHRyLW5vZGUtdmFsdWUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9FbGVtZW50L25vcm1hbGl6
ZS1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL0VsZW1lbnQvbm9ybWFsaXplLWNyYXNo
Mi5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9ldmVudC13aGlsZS1y
ZW1vdmluZy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9ldmVudC13aGlsZS1yZW1vdmluZy1hdHRyaWJ1dGUuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUtYXR0cmlidXRlcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWF0dHJpYnV0
ZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9pbXBvcnQtYXR0cmlidXRlLW5vZGUuaHRtbDoK
KyAgICAgICAgKiBmYXN0L2RvbS9pbnNlcnRlZEludG9Eb2N1bWVudC1jaGlsZC5odG1sOgorICAg
ICAgICAqIGZhc3QvZG9tL2luc2VydGVkSW50b0RvY3VtZW50LXNpYmxpbmcuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9uby1hc3NlcnQtZm9yLW1hbGZvcm1lZC1qcy11cmwtYXR0cmlidXRlLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9uby1hc3NlcnQtZm9yLW1hbGZvcm1lZC1q
cy11cmwtYXR0cmlidXRlLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vbm9ybWFsaXplLWF0dHJp
YnV0ZXMtbXV0YXRpb24tZXZlbnQtY3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9zZXJp
YWxpemUtbm9kZXMueGh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVO
SUVELWlmcmFtZS1zcmMtYWxpYXMtZXhwZWN0ZWQudHh0OgorICAgICAgICBVcGRhdGUgZXhpc3Rp
bmcgdGVzdHMgc28gdGhleSBzdG9wIHJlbHlpbmcgb24gQXR0ciBOb2RlIGhhdmluZyBUZXh0IGNo
aWxkcmVuLgorCiAyMDE3LTA1LTA0ICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFya2VkIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9tZXRob2Rz
LWFzeW5jLmh0bWwgYXMgZmxha3kuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDEtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmQwOTgwMzU3ZDI1NzMyZGE5NDRjYjNlNWZj
NDE5Yzk1YWZmZjIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDEt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0OglodHRwOi8v
d3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRj
aGlsZDEKLVN0YXR1czoJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMS5odG1sIGIvTGF5b3V0VGVzdHMvZG9tL2h0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2YzIyMWFjNTMzOWYwZThjZDUxZWQzNzM2YzVjMWJhYWNjNTQ5NzQxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDEuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQg
SFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5k
dGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWw+PGhlYWQ+PG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0PjxzY3JpcHQgY2hhcnNldD0iVVRGLTgiIHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyYXBwZW5kY2hpbGQxLmpzIj48L3Njcmlw
dD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkg
eyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0
ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRp
bjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+
NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMi
PjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8
cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMg
YSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwot
VGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRh
YiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1
LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBj
bGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9w
PgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ry
b25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwv
c3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+
Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAg
PGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8
dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsi
PjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxw
PgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0g
IDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0g
IDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9h
ZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5k
Y2hpbGQxLmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVu
ZGNoaWxkMS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJiMGFkOTM3MzdkMTNk
NTg0MmE3MjBkYTgxZWRmYTMyOGJiNjZlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
YXBwZW5kY2hpbGQxLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLQotLyoKLUNv
cHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNz
YWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25z
b3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5
KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xl
Z2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0g
ICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4g
dXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7
Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2
ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0g
LTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24g
aXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmlu
ZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9u
IGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMg
c3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21w
bGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3
aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFn
ZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8v
Ci0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNl
cHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7
Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVs
bDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAg
IGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2Fk
KGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xv
YWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAg
ICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3Io
YnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAg
IH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxl
dGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBU
ZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhh
cyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFs
bG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0
aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAg
ICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAot
QXBwZW5kcyBhIHRleHQgbm9kZSB0byBhbiBhdHRyaWJ1dGUgYW5kIGNoZWNrcyBpZiB0aGUgdmFs
dWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xk
Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEw
MDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcv
VFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTg0RTcx
MDcKLSovCi1mdW5jdGlvbiBoY19hdHRyYXBwZW5kY2hpbGQxKCkgewotICAgdmFyIHN1Y2Nlc3M7
Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cmFwcGVuZGNoaWxk
MSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0
OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIg
dGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAgICAg
dmFyIHJldHZhbDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NS
ZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsK
LSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRv
Y1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3Qu
aXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAg
ICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRl
eHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIHJldHZhbCA9IHRp
dGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52
YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVl
KTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVx
dWFscygiYXR0ck5vZGVWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0g
cmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJyZXR2YWxWYWx1ZSIsInRl
cmRheSIsdmFsdWUpOwotICAgICAgIGxhc3RDaGlsZCA9IHRpdGxlQXR0ci5sYXN0Q2hpbGQ7Ci0K
LSAgICAgIHZhbHVlID0gbGFzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxz
KCJsYXN0Q2hpbGRWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIAotfQotCi0KLQotCi1m
dW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmFwcGVuZGNoaWxkMSgpOwotfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxk
Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
YXBwZW5kY2hpbGQyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTczNWZhMDYxYmUxMTA1N2UwMGM5NDMwZjE1OTZjYjhjYmEyNTYyMS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0
ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQyCi1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGls
ZDIuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRj
aGlsZDIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA3NDE4M2Y1MjgxNThi
OGYxNWFjZGYzMTdkNjg4NGNhM2NhOTFhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
YXBwZW5kY2hpbGQyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8v
d3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBu
dW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxl
PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3Njcmlw
dD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNf
YXR0cmFwcGVuZGNoaWxkMi5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3Jp
cHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hl
YWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9l
bT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFu
dDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhh
cyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0
cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVm
ZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0
aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2Rl
PlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zh
cj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdh
bW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgot
ICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5h
Z2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0g
IDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMg
OTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJv
bmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29k
ZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFz
IDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ry
b25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9j
b2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255
bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMi5qcyBiL0xheW91dFRlc3RzL2RvbS9o
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDIuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFjNTM4OTZkMGE3MDY3MmExNWRhN2Q5YTA1MjgzZDIxODk0MjQ2ZjYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMi5qcworKysgL2Rldi9udWxs
CkBAIC0xLDEyNyArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQg
V2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5v
bG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQg
TWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhp
cyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2Ug
WzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0
cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0y
MDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmll
cyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAq
LwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDIi
OwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxs
OwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFt
ZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJ
ZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8v
ICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0
dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1t
ZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUg
dGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAn
cnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1
bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIg
PSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAg
ICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9j
KSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0K
LSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsK
LSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVw
UGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAg
ICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQ
YWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1l
dGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hy
b25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5
bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFn
ZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhl
IHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYg
KCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0
ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUF0dGVtcHRzIHRvIGFwcGVuZCBhbiBlbGVtZW50
IHRvIHRoZSBjaGlsZCBub2RlcyBvZiBhbiBhdHRyaWJ1dGUuCi0KLSogQGF1dGhvciBDdXJ0IEFy
bm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5
OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMu
b3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTE4
NEU3MTA3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmFwcGVuZGNoaWxkMigpIHsKLSAgIHZhciBzdWNj
ZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJhcHBlbmRj
aGlsZDIiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3Jvbnlt
TGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAg
dmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIHZhciBuZXdDaGlsZDsKLSAg
ICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgbGFzdENoaWxkOwotICAgICAgCi0gICAgICB2YXIg
ZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQn
KSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9h
ZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1M
aXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQot
ICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAg
ICBuZXdDaGlsZCA9IGRvYy5jcmVhdGVFbGVtZW50KCJ0ZXJkYXkiKTsKLSAgICAgIAotCXsKLQkJ
c3VjY2VzcyA9IGZhbHNlOwotCQl0cnkgewotICAgICAgICAgICAgcmV0dmFsID0gdGl0bGVBdHRy
LmFwcGVuZENoaWxkKG5ld0NoaWxkKTsKLSAgICAgICAgfQotCQljYXRjaChleCkgewotICAgICAg
c3VjY2VzcyA9ICh0eXBlb2YoZXguY29kZSkgIT0gJ3VuZGVmaW5lZCcgJiYgZXguY29kZSA9PSAz
KTsKLQkJfQotCQlhc3NlcnRUcnVlKCJ0aHJvd19ISUVSQVJDSFlfUkVRVUVTVF9FUlIiLHN1Y2Nl
c3MpOwotCX0KLQotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmFw
cGVuZGNoaWxkMigpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQzLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE0Yzc1YzAxZmM2MzNlMGUwNTdjZmVlODE2ZTUyMTc3
Y2M1ZWQ2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQzLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53
My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQz
Ci1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDMuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmViMDIzNmYyNTQ5YWE1ZWMzMmU5ZDk4NGY0Y2MwZWI0NzI4NTQ5Ni4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQzLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwg
NC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+
Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04
Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmFwcGVuZGNoaWxkMy5qcyI+PC9zY3JpcHQ+PHNj
cmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3Rh
cnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+
Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0
cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAw
MDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMw
IE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RB
VEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMg
aXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFt
cDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8
L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8
cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4K
LSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4K
LSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+
UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8
ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2Rl
PlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5G
ZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBT
b3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAg
PGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29k
ZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFy
Pm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIEly
dmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxk
My5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGls
ZDMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YWRjM2RiNWMzOTc0ZTM3ZDI2
ZGQ5Zjc3ZTAzNWYxNzM5MGI1MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVu
ZGNoaWxkMy5qcworKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi0KLS8qCi1Db3B5cmln
aHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVz
ZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1
bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFs
bCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBX
M0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1w
bGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8y
MDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICog
IEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBp
ZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAg
ICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9j
b3JlL2hjX2F0dHJhcHBlbmRjaGlsZDMiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAw
MDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhl
IHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNl
cHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0
ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUg
YW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBl
bnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7
Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAg
ICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9u
Ci0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0g
ICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0g
ICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NS
ZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NS
ZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQg
PT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAg
fQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxk
ZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19
Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24g
b2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMu
Ci0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29t
cGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3Mg
dGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBs
b2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNl
dFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUFwcGVu
ZHMgYSBkb2N1bWVudCBmcmFnbWVudCB0byBhbiBhdHRyaWJ1dGUgYW5kIGNoZWNrcyBpZiB0aGUg
dmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLQotKiBAYXV0aG9yIEN1cnQgQXJu
b2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5
ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTg0
RTcxMDcKLSovCi1mdW5jdGlvbiBoY19hdHRyYXBwZW5kY2hpbGQzKCkgewotICAgdmFyIHN1Y2Nl
c3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cmFwcGVuZGNo
aWxkMyIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1M
aXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2
YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRlck5vZGU7Ci0gICAg
ICB2YXIgZGF5Tm9kZTsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgbGFzdENoaWxkOwot
ICAgICAgdmFyIGRvY0ZyYWc7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAg
ICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVm
ID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJo
Y19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAg
IGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBh
dHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRlck5vZGUgPSBkb2MuY3Jl
YXRlVGV4dE5vZGUoInRlciIpOwotICAgICAgZGF5Tm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgi
ZGF5Iik7Ci0gICAgICBkb2NGcmFnID0gZG9jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAg
ICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5kQ2hpbGQodGVyTm9kZSk7Ci0gICAgICByZXR2YWwg
PSBkb2NGcmFnLmFwcGVuZENoaWxkKGRheU5vZGUpOwotICAgICAgcmV0dmFsID0gdGl0bGVBdHRy
LmFwcGVuZENoaWxkKGRvY0ZyYWcpOwotICAgICAgdmFsdWUgPSB0aXRsZUF0dHIudmFsdWU7Ci0K
LSAgICAgIGFzc2VydEVxdWFscygiYXR0clZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAg
ICAgdmFsdWUgPSB0aXRsZUF0dHIubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0
dHJOb2RlVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHJldHZhbC5u
b2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydE51bGwoInJldHZhbFZhbHVlIix2YWx1ZSk7Ci0gICAg
bGFzdENoaWxkID0gdGl0bGVBdHRyLmxhc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBsYXN0Q2hp
bGQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImxhc3RDaGlsZFZhbHVlIiwiZGF5
Iix2YWx1ZSk7Ci0gICAgICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBo
Y19hdHRyYXBwZW5kY2hpbGQzKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDQtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjljMDUyNDI2YzBkNDE3N2U3OTMyNDlk
YTg0ZDNhMDQyYzFhN2MwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGls
ZDQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0OglodHRw
Oi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBl
bmRjaGlsZDQKLVN0YXR1czoJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNC5odG1sIGIvTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNC5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjNmM0MzdiNzc0MTA0YTYzMGM4ZmZlYmJlNTAyZDQyMDJjMDA4NzEy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDQuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9E
VEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmlj
dC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWw+PGhlYWQ+
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0PjxzY3JpcHQgY2hhcnNldD0iVVRGLTgi
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyYXBwZW5kY2hpbGQ0LmpzIj48L3Nj
cmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRl
KCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21w
bGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1h
cnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxz
dXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZ
ZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4K
LSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMg
aXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQy
OwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBh
IHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3Vw
PjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
IiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwv
c3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAw
MDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xh
c3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0g
PHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4K
LSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgot
ICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBo
YTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgot
IDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+
Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+
Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4g
Um9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBw
ZW5kY2hpbGQ0LmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFw
cGVuZGNoaWxkNC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM3MDEwMmU0N2Yy
MDM1NjNlMDM4YmNiN2NlOWVlOTQyMjYyOTM5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyYXBwZW5kY2hpbGQ0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLQotLyoK
LUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShN
YXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBD
b25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJz
aXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAK
LXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVt
L0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoq
Ci0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1
cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkko
KSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUv
bGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNCI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVk
ID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVu
bmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0
aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcg
aXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBj
b21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNl
ZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVw
UGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAg
IC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBl
eGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVy
KCk7Ci0gICAgICAgY2hlY2tGZWF0dXJlKCJYTUwiLCBudWxsKTsKLQotICAgICAgZG9jc0xvYWRl
ZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVv
Zih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7
Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhj
X3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAg
ICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNo
KGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAg
ICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8v
ICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBl
YWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hl
biBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAg
ICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBi
b2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkg
ewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMg
PSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BdHRlbXB0IHRvIGFwcGVuZCBh
IENEQVRBU2VjdGlvbiB0byBhbiBhdHRyaWJ1dGUgd2hpY2ggc2hvdWxkIHJlc3VsdAotaW4gYSBI
SUVSQVJDSFlfUkVRVUVTVF9FUlIuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0
dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9u
ZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVD
LURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTE4NEU3MTA3Ci0qLwotZnVu
Y3Rpb24gaGNfYXR0cmFwcGVuZGNoaWxkNCgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNo
ZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJhcHBlbmRjaGlsZDQiKSAhPSBudWxs
KSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZh
ciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsK
LSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciByZXR2YWw7
Ci0gICAgICB2YXIgbGFzdENoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsK
LSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRv
Y1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2Mi
LCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0g
ICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRy
ID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICAKLQlpZigKLQkKLQko
YnVpbGRlci5jb250ZW50VHlwZSA9PSAidGV4dC9odG1sIikKLQotCSkgewotCQotCXsKLQkJc3Vj
Y2VzcyA9IGZhbHNlOwotCQl0cnkgewotICAgICAgICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRl
Q0RBVEFTZWN0aW9uKCJ0ZXJkYXkiKTsKLSAgICAgICAgfQotCQljYXRjaChleCkgewotICAgICAg
c3VjY2VzcyA9ICh0eXBlb2YoZXguY29kZSkgIT0gJ3VuZGVmaW5lZCcgJiYgZXguY29kZSA9PSA5
KTsKLQkJfQotCQlhc3NlcnRUcnVlKCJ0aHJvd19OT1RfU1VQUE9SVEVEX0VSUiIsc3VjY2Vzcyk7
Ci0JfQotCi0JfQotCQotCQllbHNlIHsKLQkJCXRleHROb2RlID0gZG9jLmNyZWF0ZUNEQVRBU2Vj
dGlvbigidGVyZGF5Iik7Ci0gICAgICAKLQl7Ci0JCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJdHJ5IHsK
LSAgICAgICAgICAgIHJldHZhbCA9IHRpdGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0g
ICAgICAgIH0KLQkJY2F0Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9mKGV4LmNvZGUp
ICE9ICd1bmRlZmluZWQnICYmIGV4LmNvZGUgPT0gMyk7Ci0JCX0KLQkJYXNzZXJ0VHJ1ZSgidGhy
b3dfSElFUkFSQ0hZX1JFUVVFU1RfRVJSIixzdWNjZXNzKTsKLQl9Ci0KLQkJfQotCQotfQotCi0K
LQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmFwcGVuZGNoaWxkNCgpOwotfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVu
ZGNoaWxkNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRyYXBwZW5kY2hpbGQ1LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggY2U0YTc1Y2ZjMDllNzk3NzRiMGRiNTQ1YjYzOTRjNmQzMjBiNjdiMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDMgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVz
dC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1CQotU3RhdHVzOglmYWlsdXJl
Ci1EZXRhaWw6CXRocm93X1dST05HX0RPQ1VNRU5UX0VSUjogYXNzZXJ0VHJ1ZSBmYWlsZWQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRj
aGlsZDUuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBl
bmRjaGlsZDUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM3MzQyZmRhM2E4
ODk1NzYzOWUyMWE1OGFiNTNlZmFhZWVhMGQxYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyYXBwZW5kY2hpbGQ1Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRw
Oi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVu
dCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3Rp
dGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3Nj
cmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
aGNfYXR0cmFwcGVuZGNoaWxkNS5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFz
Y3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48
L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAx
PC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3Vu
dGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBU
ZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAg
PHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5
UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFT
ZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxj
b2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8
L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywg
JmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2Vt
PgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBN
YW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+
Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4
YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxz
dHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3Rvcjwv
Y29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9u
eW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRl
eGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8
c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0
PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9u
eW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNy
b255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNS5qcyBiL0xheW91dFRlc3RzL2Rv
bS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM5ZTg4NTU0YzUwMTJjNTE1MDQ1Yzc0NjhjZjRjNTA4YTIxY2MyYmEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNS5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29y
bGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVj
aG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBh
bmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4g
VGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vu
c2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0g
aHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2Fy
ZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRp
ZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAg
ICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3
LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGls
ZDUiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBu
dWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBm
cmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8g
ICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMK
LS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBz
dGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMg
aW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0
aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMg
PSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBk
b2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxk
ZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsK
LSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMu
ZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAg
IH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYi
KTsKLSAgICAgICAgCi0gICAgICB2YXIgb3RoZXJEb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5
cGVvZih0aGlzLm90aGVyRG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBvdGhlckRvY1Jl
ZiA9IHRoaXMub3RoZXJEb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQo
b3RoZXJEb2NSZWYsICJvdGhlckRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBp
ZiAoZG9jc0xvYWRlZCA9PSAyKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBs
ZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0
aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxl
dGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0
aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQg
aW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRv
Y3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2Vk
IHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRl
ZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDIp
IHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQot
LyoqCi0qIAotQXR0ZW1wdCB0byBhcHBlbmQgYSBub2RlIGZyb20gYW5vdGhlciBkb2N1bWVudCB0
byBhbiBhdHRyaWJ1dGUgd2hpY2ggc2hvdWxkIHJlc3VsdAotaW4gYSBXUk9OR19ET0NVTUVOVF9F
UlIuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RS
LzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAy
NAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgx
MDAxL2xldmVsLW9uZS1jb3JlI0lELTE4NEU3MTA3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmFwcGVu
ZGNoaWxkNSgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24o
YnVpbGRlciwgImhjX2F0dHJhcHBlbmRjaGlsZDUiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFy
IGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAg
IHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsK
LSAgICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgbGFzdENo
aWxkOwotICAgICAgdmFyIG90aGVyRG9jOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVs
bDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAg
IGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJk
b2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIAotICAgICAgdmFyIG90aGVyRG9jUmVmID0gbnVsbDsK
LSAgICAgIGlmICh0eXBlb2YodGhpcy5vdGhlckRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAg
ICAgb3RoZXJEb2NSZWYgPSB0aGlzLm90aGVyRG9jOwotICAgICAgfQotICAgICAgb3RoZXJEb2Mg
PSBsb2FkKG90aGVyRG9jUmVmLCAib3RoZXJEb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9u
eW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0
Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUu
YXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0o
InRpdGxlIik7Ci0gICAgICB0ZXh0Tm9kZSA9IG90aGVyRG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJk
YXkiKTsKLSAgICAgIAotCXsKLQkJc3VjY2VzcyA9IGZhbHNlOwotCQl0cnkgewotICAgICAgICAg
ICAgcmV0dmFsID0gdGl0bGVBdHRyLmFwcGVuZENoaWxkKHRleHROb2RlKTsKLSAgICAgICAgfQot
CQljYXRjaChleCkgewotICAgICAgc3VjY2VzcyA9ICh0eXBlb2YoZXguY29kZSkgIT0gJ3VuZGVm
aW5lZCcgJiYgZXguY29kZSA9PSA0KTsKLQkJfQotCQlhc3NlcnRUcnVlKCJ0aHJvd19XUk9OR19E
T0NVTUVOVF9FUlIiLHN1Y2Nlc3MpOwotCX0KLQotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0
KCkgewotICAgaGNfYXR0cmFwcGVuZGNoaWxkNSgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ2LWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNlMTA1YzlmNDFjMTVi
NmRjOTMxYjgxMGJhODViNTI0MjkyNjE2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
YXBwZW5kY2hpbGQ2LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAot
VGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9o
Y19hdHRyYXBwZW5kY2hpbGQ2Ci1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDYuaHRtbCBiL0xheW91
dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDYuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUwYTQ1YWJkNTVlN2I3MzE2MWM5MmRhOGJjZDc4
NWYyMjc0NTQwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ2Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMg
Ii0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxo
dG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJz
ZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmFwcGVuZGNoaWxk
Ni5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxv
YWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2Fk
PSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5N
YXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAg
ICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255
bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255
bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5
bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAy
ICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZl
cmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29k
ZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2Vy
Ci0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8
c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxl
PSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+
Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9y
PC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSww
MDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xh
c3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3Jvbnlt
PgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVy
czwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkw
LDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgy
MSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2Jv
ZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmFwcGVuZGNoaWxkNi5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJhcHBlbmRjaGlsZDYuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAx
YjNkODA1ODY3YzNiMDJiNWIyNTE1ZTA1YTQ1NzgxYzMxNzUzZWIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNi5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCww
IEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29y
dGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4g
UmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtl
aW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcv
Q29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQot
Ci0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAg
ICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0
VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1U
ZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDYiOwotICAgfQotCi12YXIg
ZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBU
aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0v
LyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8g
Y29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVu
dCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBp
cyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAg
ICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5j
dGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0
cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBt
YXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1
cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFy
IGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVk
JykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2Fk
ZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAg
ICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdj
b21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFs
aXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2Nv
bXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQg
b24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFy
dGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRl
ZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hh
bmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhl
Y3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9
PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQot
Ci0KLS8qKgotKiAKLUNyZWF0ZXMgYW4gbmV3IGF0dHJpYnV0ZSBub2RlIGFuZCBhcHBlbmRzIGEg
dGV4dCBub2RlLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02
Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwt
MS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0xODRFNzEwNwotKi8KLWZ1bmN0aW9uIGhjX2F0
dHJhcHBlbmRjaGlsZDYoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxp
emF0aW9uKGJ1aWxkZXIsICJoY19hdHRyYXBwZW5kY2hpbGQ2IikgIT0gbnVsbCkgcmV0dXJuOwot
ICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7
Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIg
dmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFy
IGxhc3RDaGlsZDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAo
dHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlz
LmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZm
Iik7Ci0gICAgICB0aXRsZUF0dHIgPSBkb2MuY3JlYXRlQXR0cmlidXRlKCJ0aXRsZSIpOwotICAg
ICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoIlllc3RlcmRheSIpOwotICAgICAgcmV0
dmFsID0gdGl0bGVBdHRyLmFwcGVuZENoaWxkKHRleHROb2RlKTsKLSAgICAgIHZhbHVlID0gdGl0
bGVBdHRyLnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1ZSIsIlllc3RlcmRh
eSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAgICAg
YXNzZXJ0RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAg
dmFsdWUgPSByZXR2YWwubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoInJldHZhbFZh
bHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgbGFzdENoaWxkID0gdGl0bGVBdHRyLmxh
c3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBsYXN0Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBh
c3NlcnRFcXVhbHMoImxhc3RDaGlsZFZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAg
Ci19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyYXBwZW5kY2hpbGQ2
KCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyY2hpbGRub2RlczEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmU3YmRjMzg5MDJlYjY3MTAzZjNjODgxMTJlMWY4YTI3ODBiZDQ5Mi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9k
b20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczEtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0OglodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RP
TS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMQotU3RhdHVzOglTdWNj
ZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
Y2hpbGRub2RlczEuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJjaGlsZG5vZGVzMS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2IwYjhl
ZTVhYmIyNmRhMGU2MzY1NDc1ZjZjNDc0ZmViZTgxNGE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJjaGlsZG5vZGVzMS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAot
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAKLSAgICAi
aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBUaGlzIGlzIGNv
bW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxlPmhjX3N0YWZm
PC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmaHRtbC5qcyI+
PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9ImhjX2F0dHJjaGlsZG5vZGVzMS5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2ph
dmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3Njcmlw
dD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAw
MDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNj
b3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZl
bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFz
LCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4K
LSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50
aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RB
VEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0g
IDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1h
bGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxh
cywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8
L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVu
dCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92
YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywg
dGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0g
IDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3Rv
cjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFj
cm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMs
IFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgot
ICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFs
aXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFj
cm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwv
YWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxLmpzIGIvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhYzA4OGY0M2E3NmI0M2JkNWFjMGU2NTFjZWMxZWJmZmM1MzA2ZjAy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMS5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDEyNCArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29y
bGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVj
aG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBh
bmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4g
VGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vu
c2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0g
aHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2Fy
ZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRp
ZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAg
ICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3
LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVz
MSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51
bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZy
YW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAg
IElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwot
Ly8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0
YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBp
bW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRo
ZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9
ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRv
Y3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRl
ciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwot
ICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5k
b2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAg
fQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIp
OwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0
VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewot
ICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMg
bWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3lj
aHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkg
c3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBw
YWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0
aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBp
ZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBs
ZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQ2hlY2tzIHRoYXQgTm9kZS5jaGlsZE5vZGVz
IGZvciBhbiBhdHRyaWJ1dGUgbm9kZSBjb250YWlucwotdGhlIGV4cGVjdGVkIHRleHQgbm9kZS4K
LQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5
OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0q
IEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEv
bGV2ZWwtb25lLWNvcmUjSUQtMTQ1MTQ2MDk4NwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJjaGlsZG5v
ZGVzMSgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVp
bGRlciwgImhjX2F0dHJjaGlsZG5vZGVzMSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9j
OwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFy
IGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAg
ICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIGNoaWxkTm9kZXM7Ci0gICAgICAKLSAgICAgIHZh
ciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5l
ZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBs
b2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2Mu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255
bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwot
Ci0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAg
ICAgIGNoaWxkTm9kZXMgPSB0aXRsZUF0dHIuY2hpbGROb2RlczsKLQotICAgICAgYXNzZXJ0U2l6
ZSgiY2hpbGROb2Rlc1NpemUiLDEsY2hpbGROb2Rlcyk7Ci10ZXh0Tm9kZSA9IGNoaWxkTm9kZXMu
aXRlbSgwKTsKLSAgICAgIHZhbHVlID0gdGV4dE5vZGUubm9kZVZhbHVlOwotCi0gICAgICBhc3Nl
cnRFcXVhbHMoImNoaWxkMUlzWWVzIiwiWWVzIix2YWx1ZSk7Ci0gICAgICAgdGV4dE5vZGUgPSBj
aGlsZE5vZGVzLml0ZW0oMSk7Ci0gICAgICBhc3NlcnROdWxsKCJzZWNvbmRJdGVtSXNOdWxsIix0
ZXh0Tm9kZSk7Ci0gICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19h
dHRyY2hpbGRub2RlczEoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9k
b20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczItZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjk4MjY0MzcxNjFkNGFiOTgyZDg3ZTNlMzRjZTZj
ODU1ZDRhMjFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMi1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93d3cu
dzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMy
Ci1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMi5odG1sIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDliMDAwMjc1MDU5ZGZiMzZhOGJlZDU4ZGRhY2UyYmMyMTI2ODA3YTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4w
MS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08
IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48
dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmNoaWxkbm9kZXMyLmpzIj48L3NjcmlwdD48c2NyaXB0
IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRl
c3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8
cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25n
PgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9z
dXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9y
dGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVt
PkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNl
Y3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBh
biBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3Rh
Yjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3Vw
PgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVz
Ij4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgot
ICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8
Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8
dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBC
b3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5F
TVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVy
c29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRo
IFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNv
bXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5n
IFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczIuanMg
Yi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczIuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YzZjZDUwNGU1ODYwZTA4OWFjMDYwMjlk
YzRmYzRmNTZiNThjM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMy
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKp
IDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIElu
c3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9y
IEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmln
aHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4g
U29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29w
eXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBV
UkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZp
ZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1
cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNf
YXR0cmNoaWxkbm9kZXMyIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZh
ciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkg
dGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1
aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywg
YXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3Ro
ZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUg
ZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcg
dGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0
VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBj
cmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAv
LwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9j
c0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYg
KHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhp
cy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9j
IiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsK
LSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9
IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7
Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQot
Ly8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8g
ICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8v
ICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwK
LS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8g
ICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBs
ZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VT
dGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1DaGVja3MgTm9kZS5j
aGlsZE5vZGVzIGZvciBhbiBhdHRyaWJ1dGUgd2l0aCBtdWx0aXBsZSBjaGlsZCBub2Rlcy4KLQot
KiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9S
RUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2
ZWwtb25lLWNvcmUjSUQtMTQ1MTQ2MDk4NwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJjaGlsZG5vZGVz
MigpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRl
ciwgImhjX2F0dHJjaGlsZG5vZGVzMiIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwot
ICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0
dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAg
dmFyIHRleHROb2RlOwotICAgICAgdmFyIGNoaWxkTm9kZXM7Ci0gICAgICB2YXIgcmV0dmFsOwot
ICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5k
b2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAg
fQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFj
cm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0
ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5v
ZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0
ZW0oInRpdGxlIik7Ci0gICAgICBjaGlsZE5vZGVzID0gdGl0bGVBdHRyLmNoaWxkTm9kZXM7Ci0K
LSAgICAgIHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIHJl
dHZhbCA9IHRpdGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICBhc3NlcnRTaXpl
KCJjaGlsZE5vZGVzU2l6ZSIsMixjaGlsZE5vZGVzKTsKLXRleHROb2RlID0gY2hpbGROb2Rlcy5p
dGVtKDApOwotICAgICAgdmFsdWUgPSB0ZXh0Tm9kZS5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2Vy
dEVxdWFscygiY2hpbGQxSXNZZXMiLCJZZXMiLHZhbHVlKTsKLSAgICAgICB0ZXh0Tm9kZSA9IGNo
aWxkTm9kZXMuaXRlbSgxKTsKLSAgICAgIHZhbHVlID0gdGV4dE5vZGUubm9kZVZhbHVlOwotCi0g
ICAgICBhc3NlcnRFcXVhbHMoImNoaWxkMklzVGVyZGF5IiwidGVyZGF5Iix2YWx1ZSk7Ci0gICAg
ICAgdGV4dE5vZGUgPSBjaGlsZE5vZGVzLml0ZW0oMik7Ci0gICAgICBhc3NlcnROdWxsKCJ0aGly
ZEl0ZW1Jc051bGwiLHRleHROb2RlKTsKLSAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVz
dCgpIHsKLSAgIGhjX2F0dHJjaGlsZG5vZGVzMigpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9kZTEtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9kZTEtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzg1ZWFjNDRiYmRlN2I5NWM3
MjVkY2JlMDZlNjViOTE5Mjg0NTBlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjbG9u
ZW5vZGUxLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdDoJ
aHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRy
Y2xvbmVub2RlMQotU3RhdHVzOglTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2RlMS5odG1sIGIvTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9kZTEuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2U4ODQ3NzgyMWY4YWVlODNjNGQ2M2YzOGQ5ZTk3YTg5OWE1ZTY1MS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2RlMS5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBI
VE1MIDQuMDEvL0VOIiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0
ZCIgPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1V
VEYtOCI+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJzZWxmaHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJjbG9uZW5vZGUxLmpzIj48L3NjcmlwdD48
c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBz
dGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgp
Ij4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwv
c3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYs
MDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEy
MzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4K
LSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBD
REFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhp
cyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAm
YW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAw
MDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFz
cz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgot
IDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25n
PgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3Vw
PgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5v
Ij5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNv
ZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFy
PkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3
IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgot
ICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxj
b2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2
YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwg
SXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2Rl
MS5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjbG9uZW5vZGUx
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjY3ZTg1NTg1NTdkYmM2M2I2OGE5
MWIwZTQ4NzYxODA2ZjRjYTllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjbG9uZW5v
ZGUxLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDD
gsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRz
IEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAot
Zm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAot
UmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OC
wq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIv
Y29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0
cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50
aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICBy
ZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUv
aGNfYXR0cmNsb25lbm9kZTEiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwot
dmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBi
eSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qg
c3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25z
LCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBP
dGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRo
ZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmlu
ZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBz
ZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAg
IGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAg
IC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBk
b2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBp
ZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0
aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJk
b2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkg
ewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAg
IH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4
KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQot
Ci0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0v
LyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwot
Ly8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVk
LAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0v
LyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29t
cGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFn
ZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUFwcGVuZHMgYSB0
ZXh0IG5vZGUgdG8gYW4gYXR0cmlidXRlIGFuZCBjbG9uZXMgdGhlIG5vZGUuCi0KLSogQGF1dGhv
ciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1M
ZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1j
b3JlI0lELTNBMEVEMEE0Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmNsb25lbm9kZTEoKSB7Ci0gICB2
YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRy
Y2xvbmVub2RlMSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFj
cm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0g
ICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2Rl
OwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICB2YXIgY2xv
bmVkVGl0bGU7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5
cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5k
b2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIp
OwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0i
KTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0
ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVz
LmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHRO
b2RlKCJ0ZXJkYXkiKTsKLSAgICAgIHJldHZhbCA9IHRpdGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0
Tm9kZSk7Ci0gICAgICBjbG9uZWRUaXRsZSA9IHRpdGxlQXR0ci5jbG9uZU5vZGUoZmFsc2UpOwot
ICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gInRleHRfbm9kZV9ub3RfY2xvbmVkIjsKLQotICAg
ICAgdmFsdWUgPSBjbG9uZWRUaXRsZS52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRy
VmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IGNsb25lZFRpdGxlLm5v
ZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwiWWVzdGVyZGF5
Iix2YWx1ZSk7Ci0gICAgICAgbGFzdENoaWxkID0gY2xvbmVkVGl0bGUubGFzdENoaWxkOwotCi0g
ICAgICB2YWx1ZSA9IGxhc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygi
bGFzdENoaWxkVmFsdWUiLCJ0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICAKLX0KLQotCi0KLQotZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJjbG9uZW5vZGUxKCk7Ci19CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyZmlyc3RjaGlsZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyZmlyc3Rj
aGlsZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOGViZmUw
YjRiODMwOWE4OTM1NzFjY2Q2ZGJkZWY0YWU5MGM4MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmZpcnN0Y2hpbGQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCww
IEBACi1UZXN0OglodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9j
b3JlL2hjX2F0dHJmaXJzdGNoaWxkCi1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJmaXJzdGNoaWxkLmh0bWwgYi9MYXlv
dXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyZmlyc3RjaGlsZC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzRiNTM0MmFhYzM5MjljOTY0OTBjNmE1NzA3MTgz
ZGMxOGM5MDU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJmaXJzdGNoaWxkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0v
L1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1s
NC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1s
PjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9
IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmZpcnN0Y2hpbGQuanMi
Pjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29t
cGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9h
ZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2Fy
ZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAK
LSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRz
VGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1w
O2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNl
IHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0g
IDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxl
PSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255
bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpv
bmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4x
MDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
IiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwv
cD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ry
b25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9z
dXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZ
JmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8
L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0
cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8
L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9y
ZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5Pjwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJmaXJzdGNoaWxkLmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmZpcnN0Y2hpbGQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ZjhiNTJhZDdj
NDRjM2RiYmUzMWJmNmQwODI3YTg4YTZhZDQzN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cmZpcnN0Y2hpbGQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotCi0vKgot
Q29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1h
c3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENv
bnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNp
dHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAot
dGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0v
TGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioK
LSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVy
biB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgp
IHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9s
ZXZlbDEvY29yZS9oY19hdHRyZmlyc3RjaGlsZCI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0g
LTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24g
aXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmlu
ZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9u
IGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMg
c3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21w
bGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3
aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFn
ZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8v
Ci0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNl
cHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7
Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVs
bDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAg
IGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2Fk
KGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xv
YWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAg
ICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3Io
YnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAg
IH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxl
dGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBU
ZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhh
cyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFs
bG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0
aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAg
ICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAot
Q2hlY2tzIHRoYXQgTm9kZS5maXJzdENoaWxkIGZvciBhbiBhdHRyaWJ1dGUgbm9kZSBjb250YWlu
cwotdGhlIGV4cGVjdGVkIHRleHQgbm9kZS4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2
ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5
OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTY5NzI3Mzg4Ci0q
LwotZnVuY3Rpb24gaGNfYXR0cmZpcnN0Y2hpbGQoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBp
ZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRyZmlyc3RjaGlsZCIpICE9IG51
bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAg
dmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRy
OwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIG90aGVy
Q2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVv
Zih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7
Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwot
ICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsK
LSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMg
PSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdl
dE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gdGl0bGVBdHRyLmZpcnN0Q2hp
bGQ7Ci0KLSAgICAgIGFzc2VydE5vdE51bGwoInRleHROb2RlTm90TnVsbCIsdGV4dE5vZGUpOwot
dmFsdWUgPSB0ZXh0Tm9kZS5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiY2hpbGQx
SXNZZXMiLCJZZXMiLHZhbHVlKTsKLSAgICAgICBvdGhlckNoaWxkID0gdGV4dE5vZGUubmV4dFNp
Ymxpbmc7Ci0KLSAgICAgIGFzc2VydE51bGwoIm5leHRTaWJsaW5nSXNOdWxsIixvdGhlckNoaWxk
KTsKLSAgICBvdGhlckNoaWxkID0gdGV4dE5vZGUucHJldmlvdXNTaWJsaW5nOwotCi0gICAgICBh
c3NlcnROdWxsKCJwcmV2aW91c1NpYmxpbmdJc051bGwiLG90aGVyQ2hpbGQpOwotICAgIAotfQot
Ci0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmZpcnN0Y2hpbGQoKTsKLX0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJoYXNj
aGlsZG5vZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJoYXNjaGlsZG5vZGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmVmY2VhZGM1ZDgxMzIwM2NkYTkyMDY0NmI5YzE4NTRiZGMzODhhYi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaGFzY2hpbGRub2Rlcy1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9N
LVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmhhc2NoaWxkbm9kZXMKLVN0YXR1czoJU3Vj
Y2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmhhc2NoaWxkbm9kZXMuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJoYXNjaGlsZG5vZGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRi
Nzg0Y2YzMDMyN2UxMmMzMjE4NTlkNmZmNDU5ZmFjYmZmODNmNjYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmhhc2NoaWxkbm9kZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIg
Ci0gICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiID4KLTwhLS0gVGhp
cyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjx0aXRsZT5o
Y19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZmh0
bWwuanMiPjwvc2NyaXB0PjxzY3JpcHQgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJoY19hdHRyaGFzY2hpbGRub2Rlcy5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBl
PSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7
IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAg
PGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgot
ICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2
ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAw
MDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9u
IHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRq
YWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9z
dHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAg
PHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJl
dGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVt
PkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+
RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4m
ZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3
IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAw
NDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5l
bCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zh
cj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2Fk
LiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAw
MDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRl
ciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zh
cj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhh
cyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmhhc2NoaWxkbm9kZXMuanMgYi9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaGFzY2hpbGRub2Rlcy5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE0ODdjM2JlMWNjYTQ1YmJkOGU3YmY3OTg1
ODg5ODViN2RjMTdlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaGFzY2hpbGRub2Rl
cy5qcworKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LC
qSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJ
bnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZv
ciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJp
Z2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKu
IFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3
YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2Nv
cHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMg
VVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlm
aWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0
dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hj
X2F0dHJoYXNjaGlsZG5vZGVzIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsK
LXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg
YnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0
IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9u
cywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAg
T3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0
aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJp
bmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAg
c2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8g
ICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAg
ICAvLwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAg
ZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAg
aWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0g
dGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAi
ZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEp
IHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAg
ICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBl
eCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0K
LQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAot
Ly8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8K
LS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRl
ZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQot
Ly8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENv
bXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBh
Z2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1DaGVja3MgdGhh
dCBOb2RlLmhhc0NoaWxkTm9kZXMoKSBpcyB0cnVlIGZvciBhbiBhdHRyaWJ1dGUgd2l0aCBjb250
ZW50LgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9U
Ui8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYw
MjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4
MTAwMS9sZXZlbC1vbmUtY29yZSNJRC04MTA1OTQxODcKLSovCi1mdW5jdGlvbiBoY19hdHRyaGFz
Y2hpbGRub2RlcygpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRp
b24oYnVpbGRlciwgImhjX2F0dHJoYXNjaGlsZG5vZGVzIikgIT0gbnVsbCkgcmV0dXJuOwotICAg
IHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0g
ICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgaGFz
Q2hpbGROb2RlczsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAo
dHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlz
LmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZm
Iik7Ci0gICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255
bSIpOwotICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmli
dXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0
ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgaGFzQ2hpbGROb2RlcyA9IHRpdGxlQXR0
ci5oYXNDaGlsZE5vZGVzKCk7Ci0gICAgICBhc3NlcnRUcnVlKCJoYXNDaGlsZHJlbklzVHJ1ZSIs
aGFzQ2hpbGROb2Rlcyk7Ci0KLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhj
X2F0dHJoYXNjaGlsZG5vZGVzKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMS1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMTQ5MmEyOTQxMDU5ZDM5OWRlZmVi
M2Q2MzQxMjEzMDQwZmYxZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJl
Zm9yZTEtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0Oglo
dHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJp
bnNlcnRiZWZvcmUxCi1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rv
bS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUxLmh0bWwgYi9MYXlvdXRUZXN0
cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMS5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWQ3YWU5MGFlOWYwMjg3M2FiNTlmYTI4NDFhNWQ5ZWMw
YWQ0MmE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUxLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0v
L1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1s
NC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1s
PjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9
IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmluc2VydGJlZm9yZTEu
anMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2Fk
Q29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0i
bG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFy
Z2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAg
ICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+
Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5v
bGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAm
YW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJl
bmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+
Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNy
b255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgot
IEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1
cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0i
WWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwv
c3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAw
PC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNz
PSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4K
LSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8
L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCww
MDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEg
Tm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5
PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJpbnNlcnRiZWZvcmUxLmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmluc2VydGJlZm9yZTEuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5
YWE5OWUyMWJiMDRiODVlODAzOTI2NjUxY2M5OGI1YzllYjA4MTQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTEuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAs
MCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNv
cnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFu
IFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBL
ZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1o
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3Jn
L0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0K
LQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0g
ICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdl
dFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00t
VGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMSI7Ci0gICB9Ci0KLXZh
ciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAg
IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUK
LS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBu
byBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3Vt
ZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAg
IGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8g
ICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1
bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAg
IHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIs
IG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZp
Z3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2
YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmlu
ZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xv
YWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAg
ICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0g
J2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRp
YWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAn
Y29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxl
ZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0
YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9h
ZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBj
aGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBl
eGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVk
ID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19
Ci0KLQotLyoqCi0qIAotQXBwZW5kcyBhIHRleHQgbm9kZSB0byBhbiBhdHRyaWJ1dGUgYW5kIGNo
ZWNrcyBpZiB0aGUgdmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLQotKiBAYXV0
aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9N
LUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25l
LWNvcmUjSUQtOTUyMjgwNzI3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmluc2VydGJlZm9yZTEoKSB7
Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJo
Y19hdHRyaW5zZXJ0YmVmb3JlMSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAg
ICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJp
YnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFy
IHRleHROb2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBmaXJzdENoaWxkOwotICAg
ICAgdmFyIGxhc3RDaGlsZDsKLSAgICAgIHZhciByZWZDaGlsZCA9IG51bGw7Ci0KLSAgICAgIAot
ICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAn
dW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAg
IGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlz
dCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUg
PSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJp
YnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRs
ZSIpOwotICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoInRlcmRheSIpOwotICAg
ICAgcmV0dmFsID0gdGl0bGVBdHRyLmluc2VydEJlZm9yZSh0ZXh0Tm9kZSxyZWZDaGlsZCk7Ci0g
ICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRy
VmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2Rl
VmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlllc3RlcmRheSIs
dmFsdWUpOwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0
RXF1YWxzKCJyZXR2YWxWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIGZpcnN0Q2hpbGQg
PSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5vZGVW
YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJzdENoaWxkVmFsdWUiLCJZZXMiLHZhbHVl
KTsKLSAgICAgICBsYXN0Q2hpbGQgPSB0aXRsZUF0dHIubGFzdENoaWxkOwotCi0gICAgICB2YWx1
ZSA9IGxhc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygibGFzdENoaWxk
VmFsdWUiLCJ0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVu
VGVzdCgpIHsKLSAgIGhjX2F0dHJpbnNlcnRiZWZvcmUxKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVm
b3JlMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZjY3ZTE5
ZjhkZTQ0Y2ViNjJkMzQ2ZmE2NjJhNzdkMzU4YWMzYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmluc2VydGJlZm9yZTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiAr
MCwwIEBACi1UZXN0OglodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVs
MS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUyCi1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUyLmh0
bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3Jl
Mi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2ZmZjc5YmJkMmQwY2QzZTdj
ODk0YzZhNzI0OGJmMjBhNTkyY2ZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNl
cnRiZWZvcmUyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUg
aHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3
LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1i
ZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48
c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0
cmluc2VydGJlZm9yZTIuanMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0
Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFk
Pjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1QMDAwMTwvZW0+
Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8
L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zh
cj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMg
OTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJv
bmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVy
ZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlv
biB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgotICA8Y29kZT5T
ZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+
Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1t
YTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAg
PHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdl
cjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwvdmFyPgotICA8
YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4
NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25n
PkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+
Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5
ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9u
Zz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29k
ZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+
Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUyLmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTIuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNjNGY1MGUzMDAxZGIyOGZmMDk4ZWE2NWZiN2YwNmY3NDhlMjZjZDAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTIuanMKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDEgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxk
IFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hu
b2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5k
IE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRo
aXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNl
IFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0
dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUt
MjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZp
ZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAg
Ki8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53
My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3Jl
MiI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51
bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZy
YW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAg
IElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwot
Ly8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0
YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBp
bW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRo
ZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9
ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRv
Y3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRl
ciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwot
ICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5k
b2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAg
fQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIp
OwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0
VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewot
ICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMg
bWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3lj
aHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkg
c3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBw
YWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0
aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBp
ZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBs
ZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotUHJlcGVuZHMgYSB0ZXh0IG5vZGUgdG8gYW4g
YXR0cmlidXRlIGFuZCBjaGVja3MgaWYgdGhlIHZhbHVlIG9mCi10aGUgYXR0cmlidXRlIGlzIGNo
YW5nZWQuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0
NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5
OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTk1MjI4MDcyNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJp
bnNlcnRiZWZvcmUyKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXph
dGlvbihidWlsZGVyLCAiaGNfYXR0cmluc2VydGJlZm9yZTIiKSAhPSBudWxsKSByZXR1cm47Ci0g
ICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsK
LSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2
YWx1ZTsKLSAgICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIg
bGFzdENoaWxkOwotICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIgcmVmQ2hpbGQ7Ci0g
ICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRv
YykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9
Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNy
b255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRl
c3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9k
ZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRl
bSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXki
KTsKLSAgICAgIHJlZkNoaWxkID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAgIHJldHZh
bCA9IHRpdGxlQXR0ci5pbnNlcnRCZWZvcmUodGV4dE5vZGUscmVmQ2hpbGQpOwotICAgICAgdmFs
dWUgPSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0clZhbHVlIiwi
dGVyZGF5WWVzIix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSB0aXRsZUF0dHIubm9kZVZhbHVlOwot
Ci0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJ0ZXJkYXlZZXMiLHZhbHVlKTsK
LSAgICAgICB2YWx1ZSA9IHJldHZhbC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygi
cmV0dmFsVmFsdWUiLCJ0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICBmaXJzdENoaWxkID0gdGl0bGVB
dHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0K
LSAgICAgIGFzc2VydEVxdWFscygiZmlyc3RDaGlsZFZhbHVlIiwidGVyZGF5Iix2YWx1ZSk7Ci0g
ICAgICAgbGFzdENoaWxkID0gdGl0bGVBdHRyLmxhc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBs
YXN0Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImxhc3RDaGlsZFZhbHVl
IiwiWWVzIix2YWx1ZSk7Ci0gICAgICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7
Ci0gICBoY19hdHRyaW5zZXJ0YmVmb3JlMigpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2RiM2UzNjdhYTE2YWY1
MmNkOGUyYjI5ODhlYWViNDg4MDg3NzEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJp
bnNlcnRiZWZvcmUzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAot
VGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9o
Y19hdHRyaW5zZXJ0YmVmb3JlMwotU3RhdHVzOglTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMy5odG1sIGIvTGF5
b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg3MGQ0OGJmOWRiMjdhZTlmMGY4ZWZhZDAy
MTQ0Nzc4MThhN2QxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3Jl
My5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcv
VFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+
Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmaHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBj
aGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJpbnNlcnRi
ZWZvcmUzLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rp
b24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBv
bmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ry
b25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAg
ICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRo
YSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVt
YmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBh
IHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5
PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNy
b255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1
NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+
Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+
Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNy
b255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9j
b25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3Vw
Pjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
IiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fj
cm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0
IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxz
dXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
Ij4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4K
LTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEv
Y29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMy5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzY2IyNGNkYzFiYTQ4ZDZmM2FhYjA4ZDUxMzk4NWEwYWU2NGNhYmE2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUzLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ2ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdl
YiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBF
dXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1h
dGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsg
aXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4g
dGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3
LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMx
Ci0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0
ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5j
dGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIw
MDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMiOwotICAg
fQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0v
LwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsg
YmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVy
ZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAg
ICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8v
ICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRl
bHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4K
LS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmlu
Zyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBi
dWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVh
dGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAot
ICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAn
dW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAg
IGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAg
ICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0
YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0
Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMg
bG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9u
b3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0
dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3Qg
dG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9j
c0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0g
ICAgfQotfQotCi0KLS8qKgotKiAKLUFwcGVuZHMgYSBkb2N1bWVudCBmcmFnbWVudCB0byBhbiBh
dHRyaWJ1dGUgYW5kIGNoZWNrcyBpZiB0aGUgdmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMgY2hh
bmdlZC4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcv
VFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2
MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5
ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtOTUyMjgwNzI3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmlu
c2VydGJlZm9yZTMoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0
aW9uKGJ1aWxkZXIsICJoY19hdHRyaW5zZXJ0YmVmb3JlMyIpICE9IG51bGwpIHJldHVybjsKLSAg
ICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwot
ICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZh
bHVlOwotICAgICAgdmFyIHRlck5vZGU7Ci0gICAgICB2YXIgZGF5Tm9kZTsKLSAgICAgIHZhciBk
b2NGcmFnOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBmaXJzdENoaWxkOwotICAgICAg
dmFyIGxhc3RDaGlsZDsKLSAgICAgIHZhciByZWZDaGlsZCA9IG51bGw7Ci0KLSAgICAgIAotICAg
ICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5k
ZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRv
YyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlzdCA9
IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUgPSBh
Y3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0
ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIp
OwotICAgICAgdGVyTm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgidGVyIik7Ci0gICAgICBkYXlO
b2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJkYXkiKTsKLSAgICAgIGRvY0ZyYWcgPSBkb2MuY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGls
ZCh0ZXJOb2RlKTsKLSAgICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5kQ2hpbGQoZGF5Tm9kZSk7
Ci0gICAgICByZXR2YWwgPSB0aXRsZUF0dHIuaW5zZXJ0QmVmb3JlKGRvY0ZyYWcscmVmQ2hpbGQp
OwotICAgICAgdmFsdWUgPSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygi
YXR0clZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSB0aXRsZUF0dHIu
bm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJZZXN0ZXJk
YXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHJldHZhbC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFz
c2VydE51bGwoInJldHZhbFZhbHVlIix2YWx1ZSk7Ci0gICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0
ci5maXJzdENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGZpcnN0Q2hpbGQubm9kZVZhbHVlOwotCi0g
ICAgICBhc3NlcnRFcXVhbHMoImZpcnN0Q2hpbGRWYWx1ZSIsIlllcyIsdmFsdWUpOwotICAgICAg
IGxhc3RDaGlsZCA9IHRpdGxlQXR0ci5sYXN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gbGFzdENo
aWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJsYXN0Q2hpbGRWYWx1ZSIsImRh
eSIsdmFsdWUpOwotICAgICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAg
aGNfYXR0cmluc2VydGJlZm9yZTMoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9o
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY0ZDQ3NWRkMTAxMzBkYTA3Njk3
OGQzNWI5MTIxZTE2ZDNlYzE4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0
YmVmb3JlNC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3Q6
CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0
cmluc2VydGJlZm9yZTQKLVN0YXR1czoJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTQuaHRtbCBiL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0Lmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YTRlYThhZTVhMDhmNzkwMGExYjk5MjFkMjBjZDI5
OGI4Mjg0NDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAi
LS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0
bWw0L3N0cmljdC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0
bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0PjxzY3JpcHQgY2hhcnNl
dD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyaW5zZXJ0YmVmb3Jl
NC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxv
YWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2Fk
PSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5N
YXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAg
ICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255
bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255
bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5
bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAy
ICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZl
cmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29k
ZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2Vy
Ci0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8
c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxl
PSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+
Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9y
PC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSww
MDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xh
c3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3Jvbnlt
PgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVy
czwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkw
LDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgy
MSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2Jv
ZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmluc2VydGJlZm9yZTQuanMgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRyaW5zZXJ0YmVmb3JlNC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzAwZTYxZGNhMDQzODA3MTUzYmJhYjQ4ZjNhMzNjMGRkMmYxOGUzMS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0NyAr
MCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29u
c29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3Bl
YW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3Ms
IEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAK
LWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5v
cmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8K
LQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4K
LSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24g
Z2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RP
TS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0IjsKLSAgIH0KLQot
dmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8v
ICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9y
ZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJl
IG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9j
dW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAg
ICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0v
LyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwot
ZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwot
ICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRl
ciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3JlYXRlQ29u
ZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAg
IHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVm
aW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2Nz
TG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAot
ICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMg
PSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5p
dGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9
ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2Fs
bGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQg
c3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBs
b2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlz
IGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJl
IGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2Fk
ZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0K
LX0KLQotCi0vKioKLSogCi1QcmVwZW5kcyBhIGRvY3VtZW50IGZyYWdtZW50IHRvIGFuIGF0dHJp
YnV0ZSBhbmQgY2hlY2tzIGlmIHRoZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0ZSBpcyBjaGFuZ2Vk
LgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8x
OTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQK
LSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAw
MS9sZXZlbC1vbmUtY29yZSNJRC05NTIyODA3MjcKLSovCi1mdW5jdGlvbiBoY19hdHRyaW5zZXJ0
YmVmb3JlNCgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24o
YnVpbGRlciwgImhjX2F0dHJpbnNlcnRiZWZvcmU0IikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZh
ciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAg
ICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7
Ci0gICAgICB2YXIgdGVyTm9kZTsKLSAgICAgIHZhciBkYXlOb2RlOwotICAgICAgdmFyIGRvY0Zy
YWc7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIg
bGFzdENoaWxkOwotICAgICAgdmFyIHJlZkNoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVm
ID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0g
ICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NS
ZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0
ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAg
dGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXJO
b2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXIiKTsKLSAgICAgIGRheU5vZGUgPSBkb2MuY3Jl
YXRlVGV4dE5vZGUoImRheSIpOwotICAgICAgZG9jRnJhZyA9IGRvYy5jcmVhdGVEb2N1bWVudEZy
YWdtZW50KCk7Ci0gICAgICByZXR2YWwgPSBkb2NGcmFnLmFwcGVuZENoaWxkKHRlck5vZGUpOwot
ICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGlsZChkYXlOb2RlKTsKLSAgICAgIHJlZkNo
aWxkID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAgIHJldHZhbCA9IHRpdGxlQXR0ci5p
bnNlcnRCZWZvcmUoZG9jRnJhZyxyZWZDaGlsZCk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52
YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJ0ZXJkYXlZZXMiLHZhbHVl
KTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVx
dWFscygiYXR0ck5vZGVWYWx1ZSIsInRlcmRheVllcyIsdmFsdWUpOwotICAgICAgIHZhbHVlID0g
cmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0TnVsbCgicmV0dmFsVmFsdWUiLHZhbHVl
KTsKLSAgICBmaXJzdENoaWxkID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVl
ID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiZmlyc3RDaGls
ZFZhbHVlIiwidGVyIix2YWx1ZSk7Ci0gICAgICAgbGFzdENoaWxkID0gdGl0bGVBdHRyLmxhc3RD
aGlsZDsKLQotICAgICAgdmFsdWUgPSBsYXN0Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBhc3Nl
cnRFcXVhbHMoImxhc3RDaGlsZFZhbHVlIiwiWWVzIix2YWx1ZSk7Ci0gICAgICAgCi19Ci0KLQot
Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyaW5zZXJ0YmVmb3JlNCgpOwotfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2Vy
dGJlZm9yZTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmluc2VydGJlZm9yZTUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4N2I1YjY5NDM3ZmI1ZjM0MDczZDA0NGU0YTZmZWIwMzNjZjUwMmQzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9o
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1LWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00t
VGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNQotU3RhdHVzOglTdWNj
ZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
aW5zZXJ0YmVmb3JlNS5odG1sIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cmluc2VydGJlZm9yZTUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNh
M2U0MWI5Y2JhZmMyZjcwOTdkODdkMTRkZWJlOWEyNTgxMDM1OC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEv
Y29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAs
MCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAK
LSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBUaGlz
IGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxlPmhj
X3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmaHRt
bC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9ImhjX2F0dHJpbnNlcnRiZWZvcmU1LmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9
J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsg
fTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAg
PGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8
Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0g
IDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZl
LiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAw
MDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24g
d2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGph
Y2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0
cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8
dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0
YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5E
ZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZk
ZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcg
SXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0
PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVs
IERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQu
IERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAw
NTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVy
IFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFz
IDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNS5qcyBiL0xh
eW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1LmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTczN2VkZTBkYjRlOWJmNGZlNzUzYjhlNTEw
NjE1OGU0NThmOWY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKp
IDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIElu
c3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9y
IEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmln
aHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4g
U29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29w
eXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBV
UkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZp
ZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1
cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNf
YXR0cmluc2VydGJlZm9yZTUiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwot
dmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBi
eSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qg
c3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25z
LCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBP
dGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRo
ZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmlu
ZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBz
ZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAg
IGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAg
IC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotICAgICAgIGNo
ZWNrRmVhdHVyZSgiWE1MIiwgbnVsbCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAg
Ci0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9
ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAg
ICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAg
ICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdl
U3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAlj
YXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VT
dGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9k
IGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91
cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hy
b25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0
YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVz
dCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytk
b2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsK
LSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQXR0ZW1wdCB0byBhcHBlbmQgYSBDREFUQVNlY3Rpb24g
dG8gYW4gYXR0cmlidXRlIHdoaWNoIHNob3VsZCByZXN1bHQKLWluIGEgSElFUkFSQ0hZX1JFUVVF
U1RfRVJSLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2
NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0x
OTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC05NTIyODA3MjcKLSovCi1mdW5jdGlvbiBoY19hdHRy
aW5zZXJ0YmVmb3JlNSgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6
YXRpb24oYnVpbGRlciwgImhjX2F0dHJpbnNlcnRiZWZvcmU1IikgIT0gbnVsbCkgcmV0dXJuOwot
ICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7
Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIg
dmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFy
IHJlZkNoaWxkID0gbnVsbDsKLQotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAg
ICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1Jl
ZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAi
aGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAg
ICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0g
YXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICAKLQlpZigKLQkKLQkoYnVp
bGRlci5jb250ZW50VHlwZSA9PSAidGV4dC9odG1sIikKLQotCSkgewotCQotCXsKLQkJc3VjY2Vz
cyA9IGZhbHNlOwotCQl0cnkgewotICAgICAgICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlQ0RB
VEFTZWN0aW9uKCJ0ZXJkYXkiKTsKLSAgICAgICAgfQotCQljYXRjaChleCkgewotICAgICAgc3Vj
Y2VzcyA9ICh0eXBlb2YoZXguY29kZSkgIT0gJ3VuZGVmaW5lZCcgJiYgZXguY29kZSA9PSA5KTsK
LQkJfQotCQlhc3NlcnRUcnVlKCJ0aHJvd19OT1RfU1VQUE9SVEVEX0VSUiIsc3VjY2Vzcyk7Ci0J
fQotCi0JfQotCQotCQllbHNlIHsKLQkJCXRleHROb2RlID0gZG9jLmNyZWF0ZUNEQVRBU2VjdGlv
bigidGVyZGF5Iik7Ci0gICAgICAKLQl7Ci0JCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJdHJ5IHsKLSAg
ICAgICAgICAgIHJldHZhbCA9IHRpdGxlQXR0ci5pbnNlcnRCZWZvcmUodGV4dE5vZGUscmVmQ2hp
bGQpOwotICAgICAgICB9Ci0JCWNhdGNoKGV4KSB7Ci0gICAgICBzdWNjZXNzID0gKHR5cGVvZihl
eC5jb2RlKSAhPSAndW5kZWZpbmVkJyAmJiBleC5jb2RlID09IDMpOwotCQl9Ci0JCWFzc2VydFRy
dWUoInRocm93X0hJRVJBUkNIWV9SRVFVRVNUX0VSUiIsc3VjY2Vzcyk7Ci0JfQotCi0JCX0KLQkK
LX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJpbnNlcnRiZWZvcmU1
KCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyaW5zZXJ0YmVmb3JlNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGVlM2ZiZmNjNTFmMDdlNDBmNDRmNWVkZDk2MzFlYzQyOWZmNzYxNGYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1UZXN0OglodHRwOi8vd3d3LnczLm9yZy8y
MDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU2CQotU3Rh
dHVzOglmYWlsdXJlCi1EZXRhaWw6CXRocm93X1dST05HX0RPQ1VNRU5UX0VSUjogYXNzZXJ0VHJ1
ZSBmYWlsZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJpbnNlcnRiZWZvcmU2Lmh0bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRyaW5zZXJ0YmVmb3JlNi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlNjg2MzlkM2YxY2E2NGE3M2FlNWFkNmJkNzNlNjA3NDY3NTMxZWNkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU2Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0
OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8v
RU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0t
IFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48dGl0
bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNl
bGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iaGNfYXR0cmluc2VydGJlZm9yZTYuanMiPjwvc2NyaXB0PjxzY3JpcHQg
dHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVz
dCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxw
PgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+
Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1
cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0
aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2Vj
dGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFu
IGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFi
Ozwvc3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+
Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMi
PiZiZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxj
b2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2
YXI+JmRlbHRhOzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJv
eCAyNyBJcnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVN
UDAwMDQ8L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJz
b25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxl
PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGgg
Um9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5F
TVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29t
cHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxl
PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcg
VGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU2Lmpz
IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYu
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMDRmNjI3ZGE3YTcyYzc3YTZmYjY5
MzlhOGYzMjU0OTQ1YTgyYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJl
Zm9yZTYuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0
IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0
dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0g
Ci1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwg
Ci1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzND
w4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAw
Mi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBH
ZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRl
bnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAg
IHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29y
ZS9oY19hdHRyaW5zZXJ0YmVmb3JlNiI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAw
MDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2Fs
bGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUg
dGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2Vw
dGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRl
ZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBh
bmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVu
dGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsK
LSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAg
IC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24K
LSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAg
ICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAg
ICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1Jl
ZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1Jl
ZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgIHZhciBvdGhlckRvY1JlZiA9
IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMub3RoZXJEb2MpICE9ICd1bmRlZmluZWQnKSB7
Ci0gICAgICAgIG90aGVyRG9jUmVmID0gdGhpcy5vdGhlckRvYzsKLSAgICAgIH0KLSAgICAgIGRv
Y3NMb2FkZWQgKz0gcHJlbG9hZChvdGhlckRvY1JlZiwgIm90aGVyRG9jIiwgImhjX3N0YWZmIik7
Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDIpIHsKLSAgICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0g
ICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVw
UGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBt
ZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNo
cm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBz
eW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBh
Z2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRo
ZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlm
ICgrK2RvY3NMb2FkZWQgPT0gMikgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxl
dGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BdHRlbXB0IHRvIGFwcGVuZCBhIHRleHQgbm9k
ZSBmcm9tIGFub3RoZXIgZG9jdW1lbnQgdG8gYW4gYXR0cmlidXRlIHdoaWNoIHNob3VsZCByZXN1
bHQKLWluIGEgV1JPTkdfRE9DVU1FTlRfRVJSLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9s
ZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8x
OTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC05NTIyODA3MjcK
LSovCi1mdW5jdGlvbiBoY19hdHRyaW5zZXJ0YmVmb3JlNigpIHsKLSAgIHZhciBzdWNjZXNzOwot
ICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJpbnNlcnRiZWZvcmU2
IikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7
Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0
aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2
YXIgcmV0dmFsOwotICAgICAgdmFyIHJlZkNoaWxkID0gbnVsbDsKLQotICAgICAgdmFyIG90aGVy
RG9jOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2Yo
dGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwot
ICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAg
ICAgIAotICAgICAgdmFyIG90aGVyRG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhp
cy5vdGhlckRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgb3RoZXJEb2NSZWYgPSB0aGlz
Lm90aGVyRG9jOwotICAgICAgfQotICAgICAgb3RoZXJEb2MgPSBsb2FkKG90aGVyRG9jUmVmLCAi
b3RoZXJEb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0
ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAg
dGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXh0
Tm9kZSA9IG90aGVyRG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIAotCXsKLQkJ
c3VjY2VzcyA9IGZhbHNlOwotCQl0cnkgewotICAgICAgICAgICAgcmV0dmFsID0gdGl0bGVBdHRy
Lmluc2VydEJlZm9yZSh0ZXh0Tm9kZSxyZWZDaGlsZCk7Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgp
IHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9mKGV4LmNvZGUpICE9ICd1bmRlZmluZWQnICYmIGV4
LmNvZGUgPT0gNCk7Ci0JCX0KLQkJYXNzZXJ0VHJ1ZSgidGhyb3dfV1JPTkdfRE9DVU1FTlRfRVJS
IixzdWNjZXNzKTsKLQl9Ci0KLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhj
X2F0dHJpbnNlcnRiZWZvcmU2KCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNy1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MGVkNWM2MDNlNjMxNGIxMmRkN2Zi
ZjM1OTBiNjQxY2VhMTZlOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJl
Zm9yZTctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0Oglo
dHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJp
bnNlcnRiZWZvcmU3Ci1TdGF0dXM6CVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rv
bS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU3Lmh0bWwgYi9MYXlvdXRUZXN0
cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzA0YTNmNjlkZjg1MWExZmZjYTk5NmVjOGY0MzFmNjhi
MTU5NzFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU3Lmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0v
L1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1s
NC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1s
PjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9
IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmluc2VydGJlZm9yZTcu
anMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2Fk
Q29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0i
bG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFy
Z2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAg
ICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+
Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5v
bGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAm
YW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJl
bmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+
Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNy
b255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgot
IEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1
cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0i
WWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwv
c3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAw
PC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNz
PSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4K
LSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8
L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCww
MDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEg
Tm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5
PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJpbnNlcnRiZWZvcmU3LmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmluc2VydGJlZm9yZTcuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYw
MTQ1MDI5NTA1ZGVlY2U2ZTA3Mzc1NzE5MmJiOTgzYjY3YzEyZmIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTcuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAs
MCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNv
cnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFu
IFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBL
ZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1o
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3Jn
L0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0K
LQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0g
ICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdl
dFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00t
VGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNyI7Ci0gICB9Ci0KLXZh
ciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAg
IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUK
LS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBu
byBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3Vt
ZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAg
IGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8g
ICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1
bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAg
IHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIs
IG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZp
Z3VyZWRCdWlsZGVyKCk7Ci0gICAgICAgY2hlY2tGZWF0dXJlKCJYTUwiLCBudWxsKTsKLQotICAg
ICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAg
ICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVm
ID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVm
LCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09
IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0K
LSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVy
LCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQot
Ci0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9m
IAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgot
Ly8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBs
ZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRo
ZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9h
ZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BcHBlbmRz
IGEgZG9jdW1lbnQgZnJhZ21lbnQgY29udGFpbmluZyBhIENEQVRBU2VjdGlvbiB0byBhbiBhdHRy
aWJ1dGUuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0
NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5
OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTk1MjI4MDcyNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJp
bnNlcnRiZWZvcmU3KCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXph
dGlvbihidWlsZGVyLCAiaGNfYXR0cmluc2VydGJlZm9yZTciKSAhPSBudWxsKSByZXR1cm47Ci0g
ICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsK
LSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2
YWx1ZTsKLSAgICAgIHZhciB0ZXJOb2RlOwotICAgICAgdmFyIGRheU5vZGU7Ci0gICAgICB2YXIg
ZG9jRnJhZzsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgZmlyc3RDaGlsZDsKLSAgICAg
IHZhciBsYXN0Q2hpbGQ7Ci0gICAgICB2YXIgcmVmQ2hpbGQgPSBudWxsOwotCi0gICAgICAKLSAg
ICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3Vu
ZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBk
b2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3Qg
PSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0g
YWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1
dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUi
KTsKLSAgICAgIHRlck5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoInRlciIpOwotICAgICAgCi0J
aWYoCi0JCi0JKGJ1aWxkZXIuY29udGVudFR5cGUgPT0gInRleHQvaHRtbCIpCi0KLQkpIHsKLQkK
LQl7Ci0JCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJdHJ5IHsKLSAgICAgICAgICAgIGRheU5vZGUgPSBk
b2MuY3JlYXRlQ0RBVEFTZWN0aW9uKCJkYXkiKTsKLSAgICAgICAgfQotCQljYXRjaChleCkgewot
ICAgICAgc3VjY2VzcyA9ICh0eXBlb2YoZXguY29kZSkgIT0gJ3VuZGVmaW5lZCcgJiYgZXguY29k
ZSA9PSA5KTsKLQkJfQotCQlhc3NlcnRUcnVlKCJ0aHJvd19OT1RfU1VQUE9SVEVEX0VSUiIsc3Vj
Y2Vzcyk7Ci0JfQotCi0JfQotCQotCQllbHNlIHsKLQkJCWRheU5vZGUgPSBkb2MuY3JlYXRlQ0RB
VEFTZWN0aW9uKCJkYXkiKTsKLSAgICAgIGRvY0ZyYWcgPSBkb2MuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpOwotICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGlsZCh0ZXJOb2RlKTsKLSAg
ICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5kQ2hpbGQoZGF5Tm9kZSk7Ci0gICAgICAKLQl7Ci0J
CXN1Y2Nlc3MgPSBmYWxzZTsKLQkJdHJ5IHsKLSAgICAgICAgICAgIHJldHZhbCA9IHRpdGxlQXR0
ci5pbnNlcnRCZWZvcmUoZG9jRnJhZyxyZWZDaGlsZCk7Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgp
IHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9mKGV4LmNvZGUpICE9ICd1bmRlZmluZWQnICYmIGV4
LmNvZGUgPT0gMyk7Ci0JCX0KLQkJYXNzZXJ0VHJ1ZSgidGhyb3dfSElFUkFSQ0hZX1JFUVVFU1Rf
RVJSIixzdWNjZXNzKTsKLQl9Ci0KLQkJfQotCQotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0
KCkgewotICAgaGNfYXR0cmluc2VydGJlZm9yZTcoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0Y2hpbGQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmxhc3RjaGlsZC1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NDcyYmEyMzQ1NThiMTFmNTA3
YjE0ZWNhNGUwODUzNWMwZTMzNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmxhc3Rj
aGlsZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3Q6CWh0
dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmxh
c3RjaGlsZAotU3RhdHVzOglTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNoaWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNoaWxkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGIzNjJhN2FlNGY0NTE2MmQ2MTA4ZDc4ZWE1ZGY0NmRiYTRiNWYxYzEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmxhc3RjaGlsZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQu
MDEvL0VOIiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgot
PCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+
PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJzZWxmaHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJsYXN0Y2hpbGQuanMiPjwvc2NyaXB0PjxzY3JpcHQg
dHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVz
dCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxw
PgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+
Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1
cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0
aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2Vj
dGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFu
IGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFi
Ozwvc3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+
Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMi
PiZiZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxj
b2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2
YXI+JmRlbHRhOzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJv
eCAyNyBJcnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVN
UDAwMDQ8L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJz
b25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxl
PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGgg
Um9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5F
TVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29t
cHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxl
PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcg
VGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0Y2hpbGQuanMgYi9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNoaWxkLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGY3MzQyOWNkZTIxZWE4Y2IyYzEzMTJmNDBjOTNk
OTRiM2M4Mzc4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0Y2hpbGQuanMKKysr
IC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0y
MDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRl
IG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3Jt
YXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVz
ZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2Fy
ZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkg
b2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAK
LQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQt
c29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0
IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0
ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0
cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRybGFz
dGNoaWxkIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVy
ID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3Rp
bmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8K
LS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9u
b3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0
aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9u
IGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkg
b2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRl
c3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBi
dWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9
IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0
aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0g
ICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0
YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAg
ICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4
KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAg
IHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAg
VGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNo
IGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBl
dmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAg
dGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5
IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewot
ICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAn
Y29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1DaGVja3MgdGhhdCBOb2RlLmxhc3RD
aGlsZCBmb3IgYW4gYXR0cmlidXRlIG5vZGUgY29udGFpbnMKLXRoZSBleHBlY3RlZCB0ZXh0IG5v
ZGUuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RS
LzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAy
NAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgx
MDAxL2xldmVsLW9uZS1jb3JlI0lELTYxQUQwOUZCCi0qLwotZnVuY3Rpb24gaGNfYXR0cmxhc3Rj
aGlsZCgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVp
bGRlciwgImhjX2F0dHJsYXN0Y2hpbGQiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsK
LSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBh
dHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAg
IHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciBvdGhlckNoaWxkOwotICAgICAgCi0gICAgICB2YXIg
ZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQn
KSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9h
ZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1M
aXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQot
ICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAg
ICB0ZXh0Tm9kZSA9IHRpdGxlQXR0ci5maXJzdENoaWxkOwotCi0gICAgICBhc3NlcnROb3ROdWxs
KCJ0ZXh0Tm9kZU5vdE51bGwiLHRleHROb2RlKTsKLXZhbHVlID0gdGV4dE5vZGUubm9kZVZhbHVl
OwotCi0gICAgICBhc3NlcnRFcXVhbHMoImNoaWxkMUlzWWVzIiwiWWVzIix2YWx1ZSk7Ci0gICAg
ICAgb3RoZXJDaGlsZCA9IHRleHROb2RlLm5leHRTaWJsaW5nOwotCi0gICAgICBhc3NlcnROdWxs
KCJuZXh0U2libGluZ0lzTnVsbCIsb3RoZXJDaGlsZCk7Ci0gICAgb3RoZXJDaGlsZCA9IHRleHRO
b2RlLnByZXZpb3VzU2libGluZzsKLQotICAgICAgYXNzZXJ0TnVsbCgicHJldmlvdXNTaWJsaW5n
SXNOdWxsIixvdGhlckNoaWxkKTsKLSAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgp
IHsKLSAgIGhjX2F0dHJsYXN0Y2hpbGQoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rv
bS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3JtYWxpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6ZS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NTI0MDllMDNjODdjODBjMDQ2YTBjOWQ0
YzQwN2MxYTNhZTExYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6ZS1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3Q6CWh0dHA6Ly93
d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6
ZQotU3RhdHVzOglTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRybm9ybWFsaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRybm9ybWFsaXplLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdlNDFhNjI4MWQ1YWIwMGNiMzA4NGExMGJhYTI4OTUzODJkY2ZkMDcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDgg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VO
IiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBU
aGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxl
PmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxm
aHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9ImhjX2F0dHJub3JtYWxpemUuanMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0n
dGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9
PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8
ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxj
b2RlPkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAg
PHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUu
IERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAw
MjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3
aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFj
ZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ry
b25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2
YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRh
OyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5F
TVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRl
cGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRl
bHRhOzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJ
cnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8
L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwg
RGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+
Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4g
RGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1
PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIg
U3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+
Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMg
OTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3JtYWxpemUuanMgYi9MYXlvdXRU
ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRybm9ybWFsaXplLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkOWY1ZTI5NjJiNjY0MDYxZjE0ZTY1MjU4NDliYzE5MDUxNTg4
MTNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3JtYWxpemUuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdv
cmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRl
Y2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3Mg
YW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQu
IFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNl
bnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFd
IGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdh
cmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50
aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0g
ICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3
dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRybm9ybWFsaXpl
IjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVs
bDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJh
bWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAg
SWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0v
LyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3Rh
dHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGlt
bWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhl
IHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0g
J3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9j
dW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVy
ID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0g
ICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRv
YykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9
Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7
Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0g
ICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVw
UGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBt
ZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNo
cm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBz
eW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBh
Z2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRo
ZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlm
ICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxl
dGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BcHBlbmRzIGEgdGV4dCBub2RlIHRvIGFuIGF0
dHJpYnV0ZSwgbm9ybWFsaXplcyB0aGUgYXR0cmlidXRlCi1hbmQgY2hlY2tzIGZvciBhIHNpbmds
ZSBjaGlsZCBub2RlLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJ
RC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2
ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0xNjJDRjA4MwotKi8KLWZ1bmN0aW9uIGhj
X2F0dHJub3JtYWxpemUoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxp
emF0aW9uKGJ1aWxkZXIsICJoY19hdHRybm9ybWFsaXplIikgIT0gbnVsbCkgcmV0dXJuOwotICAg
IHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0g
ICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFs
dWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZp
cnN0Q2hpbGQ7Ci0gICAgICB2YXIgc2Vjb25kQ2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NS
ZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsK
LSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRv
Y1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3Qu
aXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAg
ICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRl
eHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIHJldHZhbCA9IHRp
dGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICB0ZXh0Tm9kZSA9IGRvYy5jcmVh
dGVUZXh0Tm9kZSgiIik7Ci0gICAgICByZXR2YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hpbGQodGV4
dE5vZGUpOwotICAgICAgdGVzdE5vZGUubm9ybWFsaXplKCk7Ci0gICAgICB2YWx1ZSA9IHRpdGxl
QXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlll
c3RlcmRheSIsdmFsdWUpOwotICAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGls
ZDsKLQotICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0
RXF1YWxzKCJmaXJzdENoaWxkVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICBzZWNv
bmRDaGlsZCA9IGZpcnN0Q2hpbGQubmV4dFNpYmxpbmc7Ci0KLSAgICAgIGFzc2VydE51bGwoInNl
Y29uZENoaWxkSXNOdWxsIixzZWNvbmRDaGlsZCk7Ci0gICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9u
IHJ1blRlc3QoKSB7Ci0gICBoY19hdHRybm9ybWFsaXplKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVtb3ZlY2hpbGQxLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZW1vdmVjaGls
ZDEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjE1ZTIxZDg1
NDQ0YjliYWQzNDU0NGJkMDFhNDE5ZmUxY2M1ZDU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJyZW1vdmVjaGlsZDEtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCww
IEBACi1UZXN0OglodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9j
b3JlL2hjX2F0dHJyZW1vdmVjaGlsZDEKLVN0YXR1czoJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMS5odG1sIGIv
TGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWMyMmZmNTQyY2Y0ZmYzNzk3ZTMzOTJi
MzUyOTNlYjRjNzAxNjc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZW1vdmVjaGls
ZDEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBV
QkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93d3cudzMub3Jn
L1RSL2h0bWw0L3N0cmljdC5kdGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0t
PgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0PjxzY3JpcHQg
Y2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRycmVtb3Zl
Y2hpbGQxLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rp
b24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBv
bmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ry
b25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAg
ICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRo
YSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVt
YmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBh
IHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5
PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNy
b255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1
NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+
Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+
Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNy
b255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9j
b25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3Vw
Pjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
IiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fj
cm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0
IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxz
dXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
Ij4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4K
LTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEv
Y29yZS9oY19hdHRycmVtb3ZlY2hpbGQxLmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNWY5ODc0NmE2OWZmNTI5YTFiZDdhZjg0M2FkZGI1M2I2ZDJjOGQ0MS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRycmVtb3ZlY2hpbGQxLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTMx
ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBD
b25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJv
cGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGlj
cywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhl
IAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3Lncz
Lm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0q
LwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0
LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlv
biBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEv
RE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMSI7Ci0gICB9Ci0K
LXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0v
LyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZv
cmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFy
ZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRv
Y3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAg
ICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQot
Ly8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8K
LWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsK
LSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxk
ZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNv
bmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAg
ICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRl
ZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9j
c0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAK
LSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVz
ID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaElu
aXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMg
PSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2Fk
IHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMg
bG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBp
cyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBi
ZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9h
ZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9
Ci19Ci0KLQotLyoqCi0qIAotUmVtb3ZlcyB0aGUgY2hpbGQgbm9kZSBvZiBhbiBhdHRyaWJ1dGUg
YW5kIGNoZWNrcyB0aGF0IHRoZSB2YWx1ZSBpcyBlbXB0eS4KLQotKiBAYXV0aG9yIEN1cnQgQXJu
b2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5
ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTcz
NDgzNDA2NgotKi8KLWZ1bmN0aW9uIGhjX2F0dHJyZW1vdmVjaGlsZDEoKSB7Ci0gICB2YXIgc3Vj
Y2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRycmVtb3Zl
Y2hpbGQxIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255
bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAg
IHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0g
ICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICAKLSAgICAgIHZh
ciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5l
ZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBs
b2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2Mu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255
bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwot
Ci0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAg
ICAgIHRleHROb2RlID0gdGl0bGVBdHRyLmZpcnN0Q2hpbGQ7Ci0KLSAgICAgIGFzc2VydE5vdE51
bGwoImF0dHJDaGlsZE5vdE51bGwiLHRleHROb2RlKTsKLXJldHZhbCA9IHRpdGxlQXR0ci5yZW1v
dmVDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsKLQotICAg
ICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCIiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRp
dGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIs
IiIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNz
ZXJ0RXF1YWxzKCJyZXR2YWxWYWx1ZSIsIlllcyIsdmFsdWUpOwotICAgICAgIGZpcnN0Q2hpbGQg
PSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgYXNzZXJ0TnVsbCgiZmlyc3RDaGlsZE51
bGwiLGZpcnN0Q2hpbGQpOwotICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewot
ICAgaGNfYXR0cnJlbW92ZWNoaWxkMSgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzZkMGE1OTNjYjJlNDZlYjA3
Y2RiZWVlMjhlZDFkY2NlYTQ0MDVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBs
YWNlY2hpbGQxLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVz
dDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19h
dHRycmVwbGFjZWNoaWxkMQotU3RhdHVzOglTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMS5odG1sIGIvTGF5b3V0
VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU1MmM2ZDg4NDM2YmI3MDRjMDEzMjEzNTc4ZjQ0
NTk3MzMyNDE2Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElD
ICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIv
aHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08
aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmaHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFy
c2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJyZXBsYWNlY2hp
bGQxLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24g
bG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxv
YWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25n
Pk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAg
ICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3Jv
bnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3Jv
bnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBS
YXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVy
IDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJl
ZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9j
b2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255
bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8
L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9n
ZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0g
IDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255
bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25u
b3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1
LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBj
bGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9u
eW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15
ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+
OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4x
ODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwv
Ym9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRycmVwbGFjZWNoaWxkMS5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQxLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmZjQ5OWU1ZDMwZWQ1MmVhNmM2ZWJlZGJmYzRlNWZjZjllZmE3NGEzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQxLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTM1
ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBD
b25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJv
cGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGlj
cywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhl
IAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3Lncz
Lm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0q
LwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0
LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlv
biBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEv
RE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEiOwotICAgfQot
Ci12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwot
Ly8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVm
b3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBh
cmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBk
b2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAg
ICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkK
LS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8v
Ci1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7
Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWls
ZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVD
b25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAg
ICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5k
ZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRv
Y3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAg
Ci0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1
cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJ
bml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVz
ID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBj
YWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9h
ZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3Vz
IGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMg
aXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8g
YmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xv
YWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAg
fQotfQotCi0KLS8qKgotKiAKLVJlcGxhY2VzIGEgdGV4dCBub2RlIG9mIGFuIGF0dHJpYnV0ZSBh
bmQgY2hlY2tzIGlmIHRoZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgotCi0q
IEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JF
Qy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNl
ZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZl
bC1vbmUtY29yZSNJRC03ODU4ODczMDcKLSovCi1mdW5jdGlvbiBoY19hdHRycmVwbGFjZWNoaWxk
MSgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRl
ciwgImhjX2F0dHJyZXBsYWNlY2hpbGQxIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7
Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIg
YXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAg
ICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0Q2hpbGQ7
Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlz
LmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAg
ICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAg
YWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAg
IHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0
Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVk
SXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJk
YXkiKTsKLSAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAg
YXNzZXJ0Tm90TnVsbCgiYXR0ckNoaWxkTm90TnVsbCIsZmlyc3RDaGlsZCk7Ci1yZXR2YWwgPSB0
aXRsZUF0dHIucmVwbGFjZUNoaWxkKHRleHROb2RlLGZpcnN0Q2hpbGQpOwotICAgICAgdmFsdWUg
PSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0clZhbHVlIiwidGVy
ZGF5Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSB0aXRsZUF0dHIubm9kZVZhbHVlOwotCi0gICAg
ICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJ0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2
YWx1ZSA9IHJldHZhbC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygicmV0dmFsVmFs
dWUiLCJZZXMiLHZhbHVlKTsKLSAgICAgICBmaXJzdENoaWxkID0gdGl0bGVBdHRyLmZpcnN0Q2hp
bGQ7Ci0KLSAgICAgIHZhbHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2Vy
dEVxdWFscygiZmlyc3RDaGlsZFZhbHVlIiwidGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgCi19Ci0K
LQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRycmVwbGFjZWNoaWxkMSgpOwot
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJl
cGxhY2VjaGlsZDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cnJlcGxhY2VjaGlsZDItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3OThiZWEzMmQzMmUwN2UxYTAwN2ViZmNiNDVkOGFjMGJkNTFmOWE5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Rv
bS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQyLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9E
T00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMgotU3RhdHVzOglT
dWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRycmVwbGFjZWNoaWxkMi5odG1sIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cnJlcGxhY2VjaGlsZDIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWIyNzJlYzdmZWVjY2RmZjRkZGJiNzkxZjI5NmEyNDVkMzRjZDdiMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDgg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VO
IiAKLSAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCIgPgotPCEtLSBU
aGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+PHRpdGxl
PmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxm
aHRtbC5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9ImhjX2F0dHJyZXBsYWNlY2hpbGQyLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5
cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3Qo
KTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4K
LSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgot
ICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+
Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGgg
QXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVN
UDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rp
b24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBh
ZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8
L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgot
ICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4m
YmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8
ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29k
ZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFy
PiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3gg
MjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAw
MDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29u
bmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJv
YWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1Q
MDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1
dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRl
eGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMi5qcyBi
L0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQyLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjZkMzE2ZDJmYTI2YTNiZDkzZWUyMDli
ZjhhZjZkNmQ5NDNhMzJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hp
bGQyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDD
gsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRz
IEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAot
Zm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAot
UmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OC
wq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIv
Y29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0
cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50
aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICBy
ZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUv
aGNfYXR0cnJlcGxhY2VjaGlsZDIiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAw
OwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl
ZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRl
c3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRp
b25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQu
ICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5k
IHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRl
cmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0g
ICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAv
LyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0g
ICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAg
ICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAg
ICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYg
PSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYs
ICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0g
MSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQot
ICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIs
IGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0K
LQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2Yg
Ci0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0v
LwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxl
dGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhl
Ci0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2Fk
Q29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVw
UGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLVJlcGxhY2Vz
IGEgdGV4dCBub2RlIG9mIGFuIGF0dHJpYnV0ZSB3aXRoIGEgZG9jdW1lbnQgZnJhZ21lbnQgYW5k
IGNoZWNrcyBpZiB0aGUgdmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLQotKiBA
YXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMt
RE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwt
b25lLWNvcmUjSUQtNzg1ODg3MzA3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cnJlcGxhY2VjaGlsZDIo
KSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIs
ICJoY19hdHRycmVwbGFjZWNoaWxkMiIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwot
ICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0
dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAg
dmFyIHRlck5vZGU7Ci0gICAgICB2YXIgZGF5Tm9kZTsKLSAgICAgIHZhciBkb2NGcmFnOwotICAg
ICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBmaXJzdENoaWxkOwotICAgICAgCi0gICAgICB2YXIg
ZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQn
KSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9h
ZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1M
aXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQot
ICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAg
ICB0ZXJOb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXIiKTsKLSAgICAgIGRheU5vZGUgPSBk
b2MuY3JlYXRlVGV4dE5vZGUoImRheSIpOwotICAgICAgZG9jRnJhZyA9IGRvYy5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7Ci0gICAgICByZXR2YWwgPSBkb2NGcmFnLmFwcGVuZENoaWxkKHRlck5v
ZGUpOwotICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGlsZChkYXlOb2RlKTsKLSAgICAg
IGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgYXNzZXJ0Tm90TnVs
bCgiYXR0ckNoaWxkTm90TnVsbCIsZmlyc3RDaGlsZCk7Ci1yZXR2YWwgPSB0aXRsZUF0dHIucmVw
bGFjZUNoaWxkKGRvY0ZyYWcsZmlyc3RDaGlsZCk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52
YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJ0ZXJkYXkiLHZhbHVlKTsK
LSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFs
cygiYXR0ck5vZGVWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gcmV0dmFs
Lm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJyZXR2YWxWYWx1ZSIsIlllcyIsdmFs
dWUpOwotICAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAg
dmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJz
dENoaWxkVmFsdWUiLCJ0ZXIiLHZhbHVlKTsKLSAgICAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24g
cnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJyZXBsYWNlY2hpbGQyKCk7Ci19CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUxLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTEt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGZlNzRiZDFjODhj
NDNmZmQxZjVhYzhlZTg1NTdkM2U1Y2VjOTUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJzZXR2YWx1ZTEtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1U
ZXN0OglodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hj
X2F0dHJzZXR2YWx1ZTEKLVN0YXR1czoJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMS5odG1sIGIvTGF5b3V0VGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMS5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyMGNiY2VjYjFhNTU1YjU5NGQ4NjBlMGU4N2JkNjkzMzUwZTFkZjI5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTEuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQg
SFRNTCA0LjAxLy9FTiIgCi0gICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5k
dGQiID4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWw+PGhlYWQ+PG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
VVRGLTgiPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0ic2VsZmh0bWwuanMiPjwvc2NyaXB0PjxzY3JpcHQgY2hhcnNldD0iVVRGLTgiIHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyc2V0dmFsdWUxLmpzIj48L3NjcmlwdD48
c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBz
dGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgp
Ij4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwv
c3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYs
MDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEy
MzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4K
LSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBD
REFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhp
cyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAm
YW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAw
MDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFz
cz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgot
IDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25n
PgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3Vw
PgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5v
Ij5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNv
ZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFy
PkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3
IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgot
ICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxj
b2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2
YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwg
SXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUx
LmpzIGIvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMS5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU3ZjdiNmQ4YmE3YWI2MzQ2NmQ3ZGFk
NjQzYmRhNzQ1MTcyMDZkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUx
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKp
IDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIElu
c3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9y
IEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmln
aHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4g
U29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29w
eXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBV
UkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZp
ZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1
cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNf
YXR0cnNldHZhbHVlMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIg
YnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRo
ZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0
ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFz
eW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVy
d2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4
Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRo
ZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVw
UGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3Jl
YXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8K
LSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NM
b2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0
eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMu
ZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIs
ICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0g
ICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBj
YXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwot
ICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8v
Ci0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAg
ICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAg
IFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0v
LyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAg
ICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0
ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotU2V0cyBBdHRyLnZhbHVl
IG9uIGFuIGF0dHJpYnV0ZSB0aGF0IG9ubHkgaGFzIGEgc2ltcGxlIHZhbHVlLgotCi0qIEBhdXRo
b3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00t
TGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0yMjE2NjI0NzQKLSovCi1mdW5jdGlv
biBoY19hdHRyc2V0dmFsdWUxKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0
aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cnNldHZhbHVlMSIpICE9IG51bGwpIHJldHVybjsK
LSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2Rl
OwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFy
IHZhbHVlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBmaXJzdENoaWxkOwotICAgICAg
dmFyIG90aGVyQ2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAg
aWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0g
dGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19z
dGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFj
cm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0
dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRy
aWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0
dHIuZmlyc3RDaGlsZDsKLQotICAgICAgYXNzZXJ0Tm90TnVsbCgiYXR0ckNoaWxkTm90TnVsbCIs
Zmlyc3RDaGlsZCk7Ci10aXRsZUF0dHIudmFsdWUgPSAiVG9tb3Jyb3ciOwotCi0gICAgICBmaXJz
dENoaWxkLm5vZGVWYWx1ZSA9ICJpbXBsIHJldXNlZCBub2RlIjsKLQotICAgICAgdmFsdWUgPSB0
aXRsZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0clZhbHVlIiwiVG9tb3Jy
b3ciLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAg
IGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlRvbW9ycm93Iix2YWx1ZSk7Ci0gICAgICAg
Zmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5sYXN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gZmlyc3RD
aGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiZmlyc3RDaGlsZFZhbHVlIiwi
VG9tb3Jyb3ciLHZhbHVlKTsKLSAgICAgICBvdGhlckNoaWxkID0gZmlyc3RDaGlsZC5uZXh0U2li
bGluZzsKLQotICAgICAgYXNzZXJ0TnVsbCgibmV4dFNpYmxpbmdJc051bGwiLG90aGVyQ2hpbGQp
OwotICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cnNldHZh
bHVlMSgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cnNldHZhbHVlMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyc2V0dmFsdWUyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzQ3NDNkYTlhMWE1NGVmYTFkMzA4ZmYxMTk2NTA3MjBmZGRhMGIzYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9k
b20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUyLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00t
VGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUyCi1TdGF0dXM6CVN1Y2Nlc3MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2
YWx1ZTIuaHRtbCBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2
YWx1ZTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTUxNTBjYTVmMzliOTMx
NmUyMjIwZWU5ZDg4YjlhMDhjMDgwNjRiNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRy
c2V0dmFsdWUyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi08IURPQ1RZUEUg
aHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAgICJodHRwOi8vd3d3
LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1i
ZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpzIj48L3NjcmlwdD48
c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0
cnNldHZhbHVlMi5qcyI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1
bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJv
ZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAg
PHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29k
ZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgot
ICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1
MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5N
YXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNl
IG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdp
dGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3Jl
dGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAg
PGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwot
IDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ry
b25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9j
b2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3Jv
bnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8
L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVu
eSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAg
PHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9
IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2
PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJv
YmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgot
ICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9
IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8
L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMi5qcyBiL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAyOWQ3ZDViMWM5OGQ3M2NiMmQ2ZGQ0MzUwYmRjZWVjNjViM2QwMTEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMi5qcworKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCww
IEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29y
dGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4g
UmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtl
aW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcv
Q29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQot
Ci0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAg
ICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0
VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1U
ZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTIiOwotICAgfQotCi12YXIgZG9j
c0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlz
IGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAg
ICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29u
ZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBs
b2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBz
ZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAg
ICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlv
biBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkg
ewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkg
dGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVk
QnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRv
Y1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykg
ewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQg
Kz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAg
aWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21w
bGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXph
dGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBs
ZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24g
dGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVk
IGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBk
b2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdl
ZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0
ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAx
KSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0K
LS8qKgotKiAKLVNldHMgQXR0ci52YWx1ZSBvbiBhbiBhdHRyaWJ1dGUgdGhhdCBzaG91bGQgY29u
dGFpbiBtdWx0aXBsZSBjaGlsZCBub2Rlcy4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2
ZWwtb25lLWNvcmUjSUQtMjIxNjYyNDc0Ci0qLwotZnVuY3Rpb24gaGNfYXR0cnNldHZhbHVlMigp
IHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwg
ImhjX2F0dHJzZXR2YWx1ZTIiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAg
IHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBhdHRyaWJ1
dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIHZhciB0
ZXh0Tm9kZTsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgZmlyc3RDaGlsZDsKLSAgICAg
IHZhciBvdGhlckNoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAg
IGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9
IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNf
c3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJh
Y3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBh
dHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0
cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXh0Tm9kZSA9IGRvYy5jcmVh
dGVUZXh0Tm9kZSgidGVyZGF5Iik7Ci0gICAgICByZXR2YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hp
bGQodGV4dE5vZGUpOwotICAgICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5maXJzdENoaWxkOwot
Ci0gICAgICBhc3NlcnROb3ROdWxsKCJhdHRyQ2hpbGROb3ROdWxsIixmaXJzdENoaWxkKTsKLXRp
dGxlQXR0ci52YWx1ZSA9ICJUb21vcnJvdyI7Ci0KLSAgICAgIGZpcnN0Q2hpbGQubm9kZVZhbHVl
ID0gImltcGwgcmV1c2VkIG5vZGUiOwotCi0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52YWx1ZTsK
LQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJUb21vcnJvdyIsdmFsdWUpOwotICAg
ICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJh
dHRyTm9kZVZhbHVlIiwiVG9tb3Jyb3ciLHZhbHVlKTsKLSAgICAgICBmaXJzdENoaWxkID0gdGl0
bGVBdHRyLmxhc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsK
LQotICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJzdENoaWxkVmFsdWUiLCJUb21vcnJvdyIsdmFsdWUp
OwotICAgICAgIG90aGVyQ2hpbGQgPSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOwotCi0gICAgICBh
c3NlcnROdWxsKCJuZXh0U2libGluZ0lzTnVsbCIsb3RoZXJDaGlsZCk7Ci0gICAgCi19Ci0KLQot
Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyc2V0dmFsdWUyKCk7Ci19CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19lbGVtZW50bm9ybWFs
aXplMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19l
bGVtZW50bm9ybWFsaXplMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhjNDY4MzkxNGM4ZTZkYTc0MzNhODZmYzNlN2E2NTQwOTYwY2VkYWUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL2h0bWwv
bGV2ZWwxL2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6ZTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0OglodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0
LVN1aXRlL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRub3JtYWxpemUyCi1TdGF0dXM6CVN1Y2Nlc3MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRu
b3JtYWxpemUyLmh0bWwgYi9MYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19lbGVt
ZW50bm9ybWFsaXplMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGJhNmU3
ZjA2MWYzYmI2MjEwZjlmOWVlMDIwMjExMDRlZGJjZmY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3Jl
L2hjX2VsZW1lbnRub3JtYWxpemUyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iIAotICAg
ICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIiA+Ci08IS0tIFRoaXMgaXMg
Y29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij48dGl0bGU+aGNfc3Rh
ZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZodG1sLmpz
Ij48L3NjcmlwdD48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iaGNfZWxlbWVudG5vcm1hbGl6ZTIuanMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0ndGV4
dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9z
Y3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+
RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2Rl
PkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZh
cj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERh
bGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwv
ZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRo
IEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50
IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25n
PgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+
RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBE
YWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAw
MDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFy
dG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRh
OzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZp
bmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2Vt
PgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGly
ZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0g
IDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFs
bGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9l
bT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3Bl
Y2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0g
IDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1
NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRub3JtYWxpemUyLmpzIGIvTGF5b3V0
VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6ZTIuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyMTk3ZWQ1YTFkODEwZGRhZjgzMjg3OWQ0MTM0MzBm
NTcyMTQ0OGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6ZTIuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAw
MS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0
dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5m
b3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMg
UmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0
d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmln
aHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0
aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBv
ZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAi
aHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19lbGVt
ZW50bm9ybWFsaXplMiI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIg
YnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRo
ZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0
ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFz
eW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVy
d2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4
Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRo
ZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVw
UGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3Jl
YXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8K
LSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NM
b2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0
eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMu
ZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIs
ICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0g
ICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBj
YXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwot
ICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8v
Ci0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAg
ICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAg
IFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0v
LyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAg
ICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0
ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQWRkIGFuIGVtcHR5IHRl
eHQgbm9kZSB0byBhbiBleGlzdGluZyBhdHRyaWJ1dGUgbm9kZSwgbm9ybWFsaXplIHRoZSBjb250
YWluaW5nIGVsZW1lbnQKLWFuZCBjaGVjayB0aGF0IHRoZSBhdHRyaWJ1dGUgbm9kZSBoYXMgZWxp
bWluYXRlZCB0aGUgZW1wdHkgdGV4dC4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwt
b25lLWNvcmUjSUQtMTYyQ0YwODMKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1Ymxp
Yy9zaG93X2J1Zy5jZ2k/aWQ9NDgyCi0qLwotZnVuY3Rpb24gaGNfZWxlbWVudG5vcm1hbGl6ZTIo
KSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIs
ICJoY19lbGVtZW50bm9ybWFsaXplMiIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwot
ICAgICAgdmFyIHJvb3Q7Ci0gICAgICB2YXIgZWxlbWVudExpc3Q7Ci0gICAgICB2YXIgZWxlbWVu
dDsKLSAgICAgIHZhciBmaXJzdENoaWxkOwotICAgICAgdmFyIHNlY29uZENoaWxkOwotICAgICAg
dmFyIGNoaWxkVmFsdWU7Ci0gICAgICB2YXIgZW1wdHlUZXh0OwotICAgICAgdmFyIGF0dHJOb2Rl
OwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0g
ICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NS
ZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwg
ImhjX3N0YWZmIik7Ci0gICAgICByb290ID0gZG9jLmRvY3VtZW50RWxlbWVudDsKLQotICAgICAg
ZW1wdHlUZXh0ID0gZG9jLmNyZWF0ZVRleHROb2RlKCIiKTsKLSAgICAgIGVsZW1lbnRMaXN0ID0g
cm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgZWxlbWVudCA9IGVs
ZW1lbnRMaXN0Lml0ZW0oMCk7Ci0gICAgICBhdHRyTm9kZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRl
Tm9kZSgidGl0bGUiKTsKLSAgICAgIHJldHZhbCA9IGF0dHJOb2RlLmFwcGVuZENoaWxkKGVtcHR5
VGV4dCk7Ci0gICAgICBlbGVtZW50Lm5vcm1hbGl6ZSgpOwotICAgICAgYXR0ck5vZGUgPSBlbGVt
ZW50LmdldEF0dHJpYnV0ZU5vZGUoInRpdGxlIik7Ci0gICAgICBmaXJzdENoaWxkID0gYXR0ck5v
ZGUuZmlyc3RDaGlsZDsKLQotICAgICAgY2hpbGRWYWx1ZSA9IGZpcnN0Q2hpbGQubm9kZVZhbHVl
OwotCi0gICAgICBhc3NlcnRFcXVhbHMoImZpcnN0Q2hpbGQiLCJZZXMiLGNoaWxkVmFsdWUpOwot
ICAgICAgIHNlY29uZENoaWxkID0gZmlyc3RDaGlsZC5uZXh0U2libGluZzsKLQotICAgICAgYXNz
ZXJ0TnVsbCgic2Vjb25kQ2hpbGROdWxsIixzZWNvbmRDaGlsZCk7Ci0gICAgCi19Ci0KLQotCi0K
LWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19lbGVtZW50bm9ybWFsaXplMigpOwotfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRj
aGlsZDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJhcHBlbmRjaGlsZDEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwNTgzYjVlN2FlMjdkZGIxZmZjZjcyYTQxOTVhMTE0ZTQwNzYzYTg3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQxLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0
LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDEKLVN0YXR1cwlTdWNjZXNzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVu
ZGNoaWxkMS5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBw
ZW5kY2hpbGQxLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmIwYWQ5MzczN2Qx
M2Q1ODQyYTcyMGRhODFlZGZhMzI4YmI2NmVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyYXBwZW5kY2hpbGQxLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLQotLyoK
LUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShN
YXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBD
b25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJz
aXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAK
LXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVt
L0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoq
Ci0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1
cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkko
KSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUv
bGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVk
ID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVu
bmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0
aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcg
aXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBj
b21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNl
ZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVw
UGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAg
IC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBl
eGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVy
KCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0g
bnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAg
ICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVs
b2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9j
c0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsK
LSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJy
b3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwot
ICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29t
cGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0
VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50
IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNo
IGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1
bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAg
ICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0q
IAotQXBwZW5kcyBhIHRleHQgbm9kZSB0byBhbiBhdHRyaWJ1dGUgYW5kIGNoZWNrcyBpZiB0aGUg
dmFsdWUgb2YKLXRoZSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLQotKiBAYXV0aG9yIEN1cnQgQXJu
b2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5
ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTg0
RTcxMDcKLSovCi1mdW5jdGlvbiBoY19hdHRyYXBwZW5kY2hpbGQxKCkgewotICAgdmFyIHN1Y2Nl
c3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cmFwcGVuZGNo
aWxkMSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1M
aXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2
YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAg
ICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBk
b2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcp
IHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2Fk
KGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxp
c3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0g
ICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAg
IHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIHJldHZhbCA9
IHRpdGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0
ci52YWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJZZXN0ZXJkYXkiLHZh
bHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2Vy
dEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVl
ID0gcmV0dmFsLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJyZXR2YWxWYWx1ZSIs
InRlcmRheSIsdmFsdWUpOwotICAgICAgIGxhc3RDaGlsZCA9IHRpdGxlQXR0ci5sYXN0Q2hpbGQ7
Ci0KLSAgICAgIHZhbHVlID0gbGFzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1
YWxzKCJsYXN0Q2hpbGRWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIAotfQotCi0KLQot
Ci1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmFwcGVuZGNoaWxkMSgpOwotfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRj
aGlsZDEueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFw
cGVuZGNoaWxkMS54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI5YjkyODAx
MmEyMGYwZDQ3ZTQxOTU2ODRkMDRkM2E1ZjhhNGY0Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmFwcGVuZGNoaWxkMS54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/PgotPCFET0NUWVBFIGh0
bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCi0gICAieGh0
bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsiPgotICAgPCFFTlRJ
VFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0NzsiPgotICAgPCFFTlRJ
VFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0OTsiPgotICAgPCFF
TlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQVUJMSUMgIm5v
dGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVNICJub3RhdGlvbjJG
aWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRyIj4KLV0+Ci08IS0tIFRo
aXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+PHNjcmlwdCAg
Y2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyYXBwZW5k
Y2hpbGQxLmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRD
b21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJs
b2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJn
YXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAg
IAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4K
LSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9s
ZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZh
bXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVu
Y2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4K
LSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3Jv
bnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0g
Sm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3Vw
PjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZ
ZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9z
dHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8
L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwv
c3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAw
MDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBO
b3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJhcHBlbmRjaGlsZDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkYzQ2NTcwMjA1NWRhMmMzNDg1MWIwZjNiZWM4OTFiYzcwZjBkNDg2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQyLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8vd3d3LnczLm9yZy8y
MDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDIKLVN0YXR1
cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmFwcGVuZGNoaWxkMi5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRyYXBwZW5kY2hpbGQyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
YzUzODk2ZDBhNzA2NzJhMTVkYTdkOWEwNTI4M2QyMTg5NDI0NmY2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICsw
LDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25z
b3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVh
biBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywg
S2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAot
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9y
Zy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwot
Ci0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0Lgot
ICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBn
ZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9N
LVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMiI7Ci0gICB9Ci0KLXZh
ciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAg
IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUK
LS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBu
byBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3Vt
ZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAg
IGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8g
ICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1
bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAg
IHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIs
IG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZp
Z3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2
YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmlu
ZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xv
YWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAg
ICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0g
J2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRp
YWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAn
Y29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxl
ZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0
YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9h
ZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBj
aGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBl
eGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVk
ID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19
Ci0KLQotLyoqCi0qIAotQXR0ZW1wdHMgdG8gYXBwZW5kIGFuIGVsZW1lbnQgdG8gdGhlIGNoaWxk
IG5vZGVzIG9mIGFuIGF0dHJpYnV0ZS4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwt
b25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9S
RUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTg0RTcxMDcKLSovCi1m
dW5jdGlvbiBoY19hdHRyYXBwZW5kY2hpbGQyKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYo
Y2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAiaGNfYXR0cmFwcGVuZGNoaWxkMiIpICE9IG51
bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAg
dmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRy
OwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIG5ld0NoaWxkOwotICAgICAgdmFyIHJldHZh
bDsKLSAgICAgIHZhciBsYXN0Q2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxs
OwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAg
ZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRv
YyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsK
LSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0
dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIG5ld0NoaWxkID0g
ZG9jLmNyZWF0ZUVsZW1lbnQoInRlcmRheSIpOwotICAgICAgCi0JewotCQlzdWNjZXNzID0gZmFs
c2U7Ci0JCXRyeSB7Ci0gICAgICAgICAgICByZXR2YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hpbGQo
bmV3Q2hpbGQpOwotICAgICAgICB9Ci0JCWNhdGNoKGV4KSB7Ci0gICAgICBzdWNjZXNzID0gKHR5
cGVvZihleC5jb2RlKSAhPSAndW5kZWZpbmVkJyAmJiBleC5jb2RlID09IDMpOwotCQl9Ci0JCWFz
c2VydFRydWUoInRocm93X0hJRVJBUkNIWV9SRVFVRVNUX0VSUiIsc3VjY2Vzcyk7Ci0JfQotCi19
Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyYXBwZW5kY2hpbGQyKCk7
Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmFwcGVuZGNoaWxkMi54aHRtbCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRyYXBwZW5kY2hpbGQyLnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
MGIxN2U3YjRjNzU3ODI2YjM4Njg5NWM4YzczZjVhMGQxMDkzZjMwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQyLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAg
KzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURP
Q1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIK
LSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0g
ICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0g
ICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+
Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBV
QkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5v
dGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4K
LTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90
aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48
c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0
dHJhcHBlbmRjaGlsZDIuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rp
b24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBv
bmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ry
b25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAg
ICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRo
YSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVt
YmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBh
IHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5
PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNy
b255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1
NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+
Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+
Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNy
b255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9j
b25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3Vw
Pjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
IiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fj
cm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0
IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxz
dXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVz
Ij4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4K
LTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20v
eGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkMy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMmE2NWFjNjUwNjA5YTgyNTc2YzhkMjMwNTg5Njdl
NGJkZWQ2NTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDMtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cu
dzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxk
MwotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQzLmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY2YWRjM2RiNWMzOTc0ZTM3ZDI2ZGQ5Zjc3ZTAzNWYxNzM5MGI1MGUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3ho
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDMuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwxMzggKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUg
V2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ks
IEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhl
bWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29y
ayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBp
biB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93
d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEy
MzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhl
IHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1
bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcv
MjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQzIjsKLSAg
IH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQot
Ly8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3Jr
IGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhl
cmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAg
ICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0v
LyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0
ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3Qu
Ci0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5p
bmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQg
YnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3Jl
YXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAK
LSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0g
J3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAg
ICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAg
ICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VT
dGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNh
dGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0
YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2Qg
aXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3Vz
IGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJv
bm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3Rh
dHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0
IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2Rv
Y3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwot
ICAgIH0KLX0KLQotCi0vKioKLSogCi1BcHBlbmRzIGEgZG9jdW1lbnQgZnJhZ21lbnQgdG8gYW4g
YXR0cmlidXRlIGFuZCBjaGVja3MgaWYgdGhlIHZhbHVlIG9mCi10aGUgYXR0cmlidXRlIGlzIGNo
YW5nZWQuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0
NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5
OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTE4NEU3MTA3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmFw
cGVuZGNoaWxkMygpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRp
b24oYnVpbGRlciwgImhjX2F0dHJhcHBlbmRjaGlsZDMiKSAhPSBudWxsKSByZXR1cm47Ci0gICAg
dmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAg
ICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1
ZTsKLSAgICAgIHZhciB0ZXJOb2RlOwotICAgICAgdmFyIGRheU5vZGU7Ci0gICAgICB2YXIgcmV0
dmFsOwotICAgICAgdmFyIGxhc3RDaGlsZDsKLSAgICAgIHZhciBkb2NGcmFnOwotICAgICAgCi0g
ICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1
bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAg
ZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0
ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9
IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmli
dXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxl
Iik7Ci0gICAgICB0ZXJOb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXIiKTsKLSAgICAgIGRh
eU5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoImRheSIpOwotICAgICAgZG9jRnJhZyA9IGRvYy5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICByZXR2YWwgPSBkb2NGcmFnLmFwcGVuZENo
aWxkKHRlck5vZGUpOwotICAgICAgcmV0dmFsID0gZG9jRnJhZy5hcHBlbmRDaGlsZChkYXlOb2Rl
KTsKLSAgICAgIHJldHZhbCA9IHRpdGxlQXR0ci5hcHBlbmRDaGlsZChkb2NGcmFnKTsKLSAgICAg
IHZhbHVlID0gdGl0bGVBdHRyLnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1
ZSIsIlllc3RlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1
ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1
ZSk7Ci0gICAgICAgdmFsdWUgPSByZXR2YWwubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnROdWxs
KCJyZXR2YWxWYWx1ZSIsdmFsdWUpOwotICAgIGxhc3RDaGlsZCA9IHRpdGxlQXR0ci5sYXN0Q2hp
bGQ7Ci0KLSAgICAgIHZhbHVlID0gbGFzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0
RXF1YWxzKCJsYXN0Q2hpbGRWYWx1ZSIsImRheSIsdmFsdWUpOwotICAgICAgIAotfQotCi0KLQot
Ci1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmFwcGVuZGNoaWxkMygpOwotfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRj
aGlsZDMueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFw
cGVuZGNoaWxkMy54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTkwMTM5OGY3
Y2VlNTk5YzVhYjViOWFkNjE3MmE3MTdkZDVlNmJjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmFwcGVuZGNoaWxkMy54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/PgotPCFET0NUWVBFIGh0
bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCi0gICAieGh0
bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsiPgotICAgPCFFTlRJ
VFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0NzsiPgotICAgPCFFTlRJ
VFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0OTsiPgotICAgPCFF
TlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQVUJMSUMgIm5v
dGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVNICJub3RhdGlvbjJG
aWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRyIj4KLV0+Ci08IS0tIFRo
aXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+PHNjcmlwdCAg
Y2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyYXBwZW5k
Y2hpbGQzLmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRD
b21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJs
b2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJn
YXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAg
IAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4K
LSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9s
ZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZh
bXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVu
Y2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4K
LSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3Jv
bnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0g
Sm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3Vw
PjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZ
ZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9z
dHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8
L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwv
c3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAw
MDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBO
b3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJhcHBlbmRjaGlsZDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwNGJhMzBjMGFhOTIwMGM2NWIzZDZiZDZkNjk5YTc3ZGY2NmNhZDFi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ0LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8vd3d3LnczLm9yZy8y
MDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDQKLVN0YXR1
cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmFwcGVuZGNoaWxkNC5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRyYXBwZW5kY2hpbGQ0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
YzcwMTAyZTQ3ZjIwMzU2M2UwMzhiY2I3Y2U5ZWU5NDIyNjI5Mzk0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICsw
LDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25z
b3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVh
biBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywg
S2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAot
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9y
Zy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwot
Ci0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0Lgot
ICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBn
ZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9N
LVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNCI7Ci0gICB9Ci0KLXZh
ciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAg
IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUK
LS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBu
byBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3Vt
ZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAg
IGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8g
ICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1
bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAg
IHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIs
IG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZp
Z3VyZWRCdWlsZGVyKCk7Ci0gICAgICAgY2hlY2tGZWF0dXJlKCJYTUwiLCBudWxsKTsKLQotICAg
ICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAg
ICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVm
ID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVm
LCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09
IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0K
LSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVy
LCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQot
Ci0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9m
IAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgot
Ly8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBs
ZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRo
ZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9h
ZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BdHRlbXB0
IHRvIGFwcGVuZCBhIENEQVRBU2VjdGlvbiB0byBhbiBhdHRyaWJ1dGUgd2hpY2ggc2hvdWxkIHJl
c3VsdAotaW4gYSBISUVSQVJDSFlfUkVRVUVTVF9FUlIuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9s
ZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgx
MDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTE4NEU3
MTA3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmFwcGVuZGNoaWxkNCgpIHsKLSAgIHZhciBzdWNjZXNz
OwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJhcHBlbmRjaGls
ZDQiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlz
dDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFy
IHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAgICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAg
IHZhciByZXR2YWw7Ci0gICAgICB2YXIgbGFzdENoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9j
UmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7
Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChk
b2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0
Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAg
ICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICAK
LQlpZigKLQkKLQkoYnVpbGRlci5jb250ZW50VHlwZSA9PSAidGV4dC9odG1sIikKLQotCSkgewot
CQotCXsKLQkJc3VjY2VzcyA9IGZhbHNlOwotCQl0cnkgewotICAgICAgICAgICAgdGV4dE5vZGUg
PSBkb2MuY3JlYXRlQ0RBVEFTZWN0aW9uKCJ0ZXJkYXkiKTsKLSAgICAgICAgfQotCQljYXRjaChl
eCkgewotICAgICAgc3VjY2VzcyA9ICh0eXBlb2YoZXguY29kZSkgIT0gJ3VuZGVmaW5lZCcgJiYg
ZXguY29kZSA9PSA5KTsKLQkJfQotCQlhc3NlcnRUcnVlKCJ0aHJvd19OT1RfU1VQUE9SVEVEX0VS
UiIsc3VjY2Vzcyk7Ci0JfQotCi0JfQotCQotCQllbHNlIHsKLQkJCXRleHROb2RlID0gZG9jLmNy
ZWF0ZUNEQVRBU2VjdGlvbigidGVyZGF5Iik7Ci0gICAgICAKLQl7Ci0JCXN1Y2Nlc3MgPSBmYWxz
ZTsKLQkJdHJ5IHsKLSAgICAgICAgICAgIHJldHZhbCA9IHRpdGxlQXR0ci5hcHBlbmRDaGlsZCh0
ZXh0Tm9kZSk7Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlw
ZW9mKGV4LmNvZGUpICE9ICd1bmRlZmluZWQnICYmIGV4LmNvZGUgPT0gMyk7Ci0JCX0KLQkJYXNz
ZXJ0VHJ1ZSgidGhyb3dfSElFUkFSQ0hZX1JFUVVFU1RfRVJSIixzdWNjZXNzKTsKLQl9Ci0KLQkJ
fQotCQotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmFwcGVuZGNo
aWxkNCgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJhcHBlbmRjaGlsZDQueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNC54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTg2NTlhNGY5NGIwZDViNzA0ZjZhMTcwNzg3OThiZWExNmUwOTQwZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNC54aHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDYwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/
PgotPCFET0NUWVBFIGh0bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmlj
dC8vRU4iCi0gICAieGh0bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0
NTsiPgotICAgPCFFTlRJVFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0
NzsiPgotICAgPCFFTlRJVFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICIm
Izk0OTsiPgotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0
aW9uMSBQVUJMSUMgIm5vdGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lT
VEVNICJub3RhdGlvbjJGaWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRy
Ij4KLV0+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19z
dGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1s
LmpzIi8+PHNjcmlwdCAgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJoY19hdHRyYXBwZW5kY2hpbGQ0LmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQn
PmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+
PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4K
LSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwv
Y29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5
ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9u
Zz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJl
bmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9u
IHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNl
Y3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4K
LSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1h
OwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8
c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2Vy
PC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1
NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+
SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4K
LSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4
NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25n
PlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2Rl
PgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4K
LSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUtZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGYyYTY0MDU0ODNjMDI1MGU1NGM4ZmY4
YTM4MWM4ODA3YTg1NTAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hp
bGQ1LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGVzdAlodHRw
Oi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBl
bmRjaGlsZDUKLVN0YXR1cwlmYWlsdXJlCi1NZXNzYWdlCXRocm93X1dST05HX0RPQ1VNRU5UX0VS
UjogYXNzZXJ0VHJ1ZSBmYWlsZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1LmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGM5ZTg4NTU0YzUwMTJjNTE1MDQ1Yzc0NjhjZjRjNTA4YTIxY2MyYmEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9t
L3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwxNDEgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdp
ZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xv
Z3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1h
dGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMg
d29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsx
XSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6
Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAw
MjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMg
dGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8K
LWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5v
cmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1IjsK
LSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsK
LQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3
b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYg
dGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAg
ICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVz
Ci0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVk
aWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRl
c3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1
bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1l
bnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0g
Y3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAg
ICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykg
IT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0g
ICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0g
ICAgICAgIAotICAgICAgdmFyIG90aGVyRG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2Yo
dGhpcy5vdGhlckRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgb3RoZXJEb2NSZWYgPSB0
aGlzLm90aGVyRG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKG90aGVy
RG9jUmVmLCAib3RoZXJEb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRv
Y3NMb2FkZWQgPT0gMikgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7
Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVy
cm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsK
LSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNv
bXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNl
dFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVu
dCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGlj
aCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1m
dW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAyKSB7Ci0g
ICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgot
KiAKLUF0dGVtcHQgdG8gYXBwZW5kIGEgbm9kZSBmcm9tIGFub3RoZXIgZG9jdW1lbnQgdG8gYW4g
YXR0cmlidXRlIHdoaWNoIHNob3VsZCByZXN1bHQKLWluIGEgV1JPTkdfRE9DVU1FTlRfRVJSLgot
Ci0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4
L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9s
ZXZlbC1vbmUtY29yZSNJRC0xODRFNzEwNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJhcHBlbmRjaGls
ZDUoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxk
ZXIsICJoY19hdHRyYXBwZW5kY2hpbGQ1IikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7
Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIg
YXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAg
ICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGxhc3RDaGlsZDsK
LSAgICAgIHZhciBvdGhlckRvYzsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0g
ICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NS
ZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwg
ImhjX3N0YWZmIik7Ci0gICAgICAKLSAgICAgIHZhciBvdGhlckRvY1JlZiA9IG51bGw7Ci0gICAg
ICBpZiAodHlwZW9mKHRoaXMub3RoZXJEb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIG90
aGVyRG9jUmVmID0gdGhpcy5vdGhlckRvYzsKLSAgICAgIH0KLSAgICAgIG90aGVyRG9jID0gbG9h
ZChvdGhlckRvY1JlZiwgIm90aGVyRG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlz
dCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUg
PSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJp
YnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRs
ZSIpOwotICAgICAgdGV4dE5vZGUgPSBvdGhlckRvYy5jcmVhdGVUZXh0Tm9kZSgidGVyZGF5Iik7
Ci0gICAgICAKLQl7Ci0JCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJdHJ5IHsKLSAgICAgICAgICAgIHJl
dHZhbCA9IHRpdGxlQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICAgIH0KLQkJY2F0
Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9mKGV4LmNvZGUpICE9ICd1bmRlZmluZWQn
ICYmIGV4LmNvZGUgPT0gNCk7Ci0JCX0KLQkJYXNzZXJ0VHJ1ZSgidGhyb3dfV1JPTkdfRE9DVU1F
TlRfRVJSIixzdWNjZXNzKTsKLQl9Ci0KLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsK
LSAgIGhjX2F0dHJhcHBlbmRjaGlsZDUoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1LnhodG1sIGIvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUueGh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMjc3MTMzZGE3NmQ1OWU5ZDVlYzNjYzlkMDkwNzMx
NDI2MWFhMDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDUueGh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz48
P1RFU1QtU1RZTEUgUElEQVRBPz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0vL1czQy8v
RFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBbCi0gICA8
IUVOVElUWSBhbHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+Ci0gICA8
IUVOVElUWSBnYW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsiPgotICAg
PCFFTlRJVFkgZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1MDsiPgot
ICAgPCFOT1RBVElPTiBub3RhdGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAgIDwhTk9U
QVRJT04gbm90YXRpb24yIFNZU1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJU1QgYWNy
b255bSBkaXIgQ0RBVEEgImx0ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEu
LS0+Ci08aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhlYWQ+PG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
VVRGLTgiLz48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmFwcGVuZGNoaWxkNS5qcyIvPjxzY3JpcHQgdHlw
ZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgp
OyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgot
ICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0g
IDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4K
LSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBB
dmUuIERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1Q
MDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlv
biB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFk
amFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwv
c3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0g
IDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZi
ZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxl
bT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2Rl
PkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+
JmRlbHRhOzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAy
NyBJcnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAw
MDQ8L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25u
ZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92
YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9h
ZC4gRGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAw
MDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0
ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92
YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4
YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ2LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5k
Y2hpbGQ2LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFhMTdl
NGY5YmY4ZTE2MmFhNzk0OGE0OGZhNTU3YzEwMTMyMGU1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmFwcGVuZGNoaWxkNi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwy
ICswLDAgQEAKLVRlc3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZl
bDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ2Ci1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJhcHBlbmRjaGlsZDYuanMg
Yi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNi5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFiM2Q4MDU4NjdjM2IwMmI1YjI1MTVl
MDVhNDU3ODFjMzE3NTNlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNo
aWxkNi5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQg
w4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0
cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAK
LWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAK
LVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PD
gsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGll
ZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAy
L2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdl
dHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVu
dGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAg
cmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3Jl
L2hjX2F0dHJhcHBlbmRjaGlsZDYiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAw
OwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl
ZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRl
c3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRp
b25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQu
ICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5k
IHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRl
cmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0g
ICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAv
LyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0g
ICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAg
ICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAg
ICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYg
PSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYs
ICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0g
MSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQot
ICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIs
IGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0K
LQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2Yg
Ci0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0v
LwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxl
dGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhl
Ci0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2Fk
Q29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVw
UGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUNyZWF0ZXMg
YW4gbmV3IGF0dHJpYnV0ZSBub2RlIGFuZCBhcHBlbmRzIGEgdGV4dCBub2RlLgotCi0qIEBhdXRo
b3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00t
TGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRw
Oi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUt
Y29yZSNJRC0xODRFNzEwNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJhcHBlbmRjaGlsZDYoKSB7Ci0g
ICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19h
dHRyYXBwZW5kY2hpbGQ2IikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2
YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRl
czsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4
dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGxhc3RDaGlsZDsKLSAgICAgIAot
ICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAn
dW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAg
IGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICB0aXRsZUF0dHIg
PSBkb2MuY3JlYXRlQXR0cmlidXRlKCJ0aXRsZSIpOwotICAgICAgdGV4dE5vZGUgPSBkb2MuY3Jl
YXRlVGV4dE5vZGUoIlllc3RlcmRheSIpOwotICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmFwcGVu
ZENoaWxkKHRleHROb2RlKTsKLSAgICAgIHZhbHVlID0gdGl0bGVBdHRyLnZhbHVlOwotCi0gICAg
ICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1ZSIsIlllc3RlcmRheSIsdmFsdWUpOwotICAgICAgIHZh
bHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyTm9k
ZVZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSByZXR2YWwubm9kZVZh
bHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoInJldHZhbFZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1
ZSk7Ci0gICAgICAgbGFzdENoaWxkID0gdGl0bGVBdHRyLmxhc3RDaGlsZDsKLQotICAgICAgdmFs
dWUgPSBsYXN0Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImxhc3RDaGls
ZFZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9u
IHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyYXBwZW5kY2hpbGQ2KCk7Ci19CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNi54aHRt
bCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ2
LnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDJhYjg0ZmI2MDhjNDNlMTNh
Y2M0YzAzNmFjZmU1Mzg1MzY0NzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBw
ZW5kY2hpbGQ2LnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVy
c2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0
LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICIm
Izk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAi
JiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBo
YSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmls
ZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAg
PCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21t
ZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJV
VEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJhcHBlbmRjaGlsZDYuanMi
Lz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkg
eyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0
ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRp
bjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+
NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMi
PjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8
cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMg
YSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwot
VGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRh
YiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1
LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBj
bGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9w
PgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ry
b25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwv
c3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+
Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAg
PGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8
dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsi
PjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxw
PgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0g
IDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0g
IDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9h
ZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxk
bm9kZXMxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRyY2hpbGRub2RlczEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlZWU3NjE0MGM5M2RhYWI1Zjk2NmVmZjFlNzI4ZGYwMjNkMDk5YzY0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczEtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3Qt
U3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMxCi1TdGF0dXMJU3VjY2VzcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5v
ZGVzMS5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRu
b2RlczEuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMDg4ZjQzYTc2YjQzYmQ1
YWMwZTY1MWNlYzFlYmZmYzUzMDZmMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJj
aGlsZG5vZGVzMS5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0KLS8qCi1Db3B5
cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2Fj
aHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29y
dGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSku
IEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUg
aW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdh
bC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAg
ICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVy
aSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewot
ICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVs
MS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEw
MDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0
aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4
Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3Rh
cnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0
ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVu
IGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgp
IHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0g
ICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRp
b24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0K
LSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsK
LSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRv
Y1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRv
Y1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRl
ZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAg
ICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVp
bGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0K
LX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlv
biBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0
cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBj
b21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93
cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9u
IGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAg
c2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQ2hl
Y2tzIHRoYXQgTm9kZS5jaGlsZE5vZGVzIGZvciBhbiBhdHRyaWJ1dGUgbm9kZSBjb250YWlucwot
dGhlIGV4cGVjdGVkIHRleHQgbm9kZS4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwt
b25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9S
RUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtMTQ1MTQ2MDk4NwotKi8K
LWZ1bmN0aW9uIGhjX2F0dHJjaGlsZG5vZGVzMSgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlm
KGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJjaGlsZG5vZGVzMSIpICE9IG51
bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAg
dmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRy
OwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRleHROb2RlOwotICAgICAgdmFyIGNoaWxk
Tm9kZXM7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVv
Zih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7
Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwot
ICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsK
LSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMg
PSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdl
dE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIGNoaWxkTm9kZXMgPSB0aXRsZUF0dHIuY2hpbGRO
b2RlczsKLQotICAgICAgYXNzZXJ0U2l6ZSgiY2hpbGROb2Rlc1NpemUiLDEsY2hpbGROb2Rlcyk7
Ci10ZXh0Tm9kZSA9IGNoaWxkTm9kZXMuaXRlbSgwKTsKLSAgICAgIHZhbHVlID0gdGV4dE5vZGUu
bm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImNoaWxkMUlzWWVzIiwiWWVzIix2YWx1
ZSk7Ci0gICAgICAgdGV4dE5vZGUgPSBjaGlsZE5vZGVzLml0ZW0oMSk7Ci0gICAgICBhc3NlcnRO
dWxsKCJzZWNvbmRJdGVtSXNOdWxsIix0ZXh0Tm9kZSk7Ci0gICAgCi19Ci0KLQotCi0KLWZ1bmN0
aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyY2hpbGRub2RlczEoKTsKLX0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2RlczEueGh0
bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMx
LnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjU1MmU2ZTdjNTU4NjYwODNl
YTgzOTRjMDg1YWI3YTUyYTZmZWEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hp
bGRub2RlczEueGh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJz
aW9uPSIxLjAiPz48P1RFU1QtU1RZTEUgUElEQVRBPz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJM
SUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgotICAgInhodG1sMS1zdHJpY3Qu
ZHRkIiBbCi0gICA8IUVOVElUWSBhbHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYj
OTQ2OyI+Ci0gICA8IUVOVElUWSBnYW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICIm
Izk0ODsiPgotICAgPCFFTlRJVFkgZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhh
ICImIzk1MDsiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxl
Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24yIFNZU1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8
IUFUVExJU1QgYWNyb255bSBkaXIgQ0RBVEEgImx0ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1l
bnQgbnVtYmVyIDEuLS0+Ci08aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCc+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9VVRGLTgiLz48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVU
Ri04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmNoaWxkbm9kZXMxLmpzIi8+
PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsg
c3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUo
KSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48
L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2
LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4x
MjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+
Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEg
Q0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRo
aXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIg
JmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSww
MDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xh
c3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4K
LSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9u
Zz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1
cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJO
byI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgot
ICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxj
b2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZh
cj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4y
NyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4K
LSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8
Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8
dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQs
IElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5v
ZGVzMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cmNoaWxkbm9kZXMyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzhiNTYyMjhlNjM3Mjc2OWE4OGQ1ZTUwODA1YjJjZjQ4OTM2YTgwYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1
aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMgotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hpbGRub2Rl
czIuanMgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9k
ZXMyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmM2Y2Q1MDRlNTg2MGUwODlh
YzA2MDI5ZGM0ZmM0ZjU2YjU4YzNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2hp
bGRub2RlczIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotCi0vKgotQ29weXJp
Z2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1
c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRp
dW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBB
bGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
VzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwv
MjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAq
ICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkg
aWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAg
ICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEv
Y29yZS9oY19hdHRyY2hpbGRub2RlczIiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAw
MDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhl
IHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNl
cHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0
ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUg
YW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBl
bnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7
Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAg
ICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9u
Ci0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0g
ICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0g
ICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NS
ZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NS
ZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQg
PT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAg
fQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxk
ZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19
Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24g
b2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMu
Ci0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29t
cGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3Mg
dGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBs
b2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNl
dFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUNoZWNr
cyBOb2RlLmNoaWxkTm9kZXMgZm9yIGFuIGF0dHJpYnV0ZSB3aXRoIG11bHRpcGxlIGNoaWxkIG5v
ZGVzLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9U
Ui8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYw
MjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4
MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0xNDUxNDYwOTg3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmNo
aWxkbm9kZXMyKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlv
bihidWlsZGVyLCAiaGNfYXR0cmNoaWxkbm9kZXMyIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZh
ciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAg
ICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7
Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgY2hpbGROb2RlczsKLSAgICAgIHZhciBy
ZXR2YWw7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVv
Zih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7
Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwot
ICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsK
LSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMg
PSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdl
dE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIGNoaWxkTm9kZXMgPSB0aXRsZUF0dHIuY2hpbGRO
b2RlczsKLQotICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoInRlcmRheSIpOwot
ICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmFwcGVuZENoaWxkKHRleHROb2RlKTsKLSAgICAgIGFz
c2VydFNpemUoImNoaWxkTm9kZXNTaXplIiwyLGNoaWxkTm9kZXMpOwotdGV4dE5vZGUgPSBjaGls
ZE5vZGVzLml0ZW0oMCk7Ci0gICAgICB2YWx1ZSA9IHRleHROb2RlLm5vZGVWYWx1ZTsKLQotICAg
ICAgYXNzZXJ0RXF1YWxzKCJjaGlsZDFJc1llcyIsIlllcyIsdmFsdWUpOwotICAgICAgIHRleHRO
b2RlID0gY2hpbGROb2Rlcy5pdGVtKDEpOwotICAgICAgdmFsdWUgPSB0ZXh0Tm9kZS5ub2RlVmFs
dWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiY2hpbGQySXNUZXJkYXkiLCJ0ZXJkYXkiLHZhbHVl
KTsKLSAgICAgICB0ZXh0Tm9kZSA9IGNoaWxkTm9kZXMuaXRlbSgyKTsKLSAgICAgIGFzc2VydE51
bGwoInRoaXJkSXRlbUlzTnVsbCIsdGV4dE5vZGUpOwotICAgIAotfQotCi0KLQotCi1mdW5jdGlv
biBydW5UZXN0KCkgewotICAgaGNfYXR0cmNoaWxkbm9kZXMyKCk7Ci19CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxkbm9kZXMyLnhodG1s
IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJjaGlsZG5vZGVzMi54
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ2MDgzYjgyYmRiN2Q5NzM2YWVl
MzMwODMxZjEzNTJmNTdjMzE0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNoaWxk
bm9kZXMyLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lv
bj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElD
ICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0
ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0
NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5
NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAi
JiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+
Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFB
VFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50
IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwn
PjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYt
OCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJjaGlsZG5vZGVzMi5qcyIvPjxz
Y3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0
YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCki
PgotIDxwPgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9z
dHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAgICAKLSAgPHN1cD41Niww
MDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIz
MCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgot
ICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENE
QVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlz
IGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZh
bXA7dGFiOzwvc3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAw
PC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNz
PSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0g
PHA+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+
Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+
Ci0gIDx2YXI+JmRlbHRhOzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8i
PlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAg
PGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29k
ZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+
RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+Mjcg
U291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNv
ZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZh
cj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJ
cnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2Rl
MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmNsb25lbm9kZTEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
M2RjMTY3Y2RhNjE4NzQ4YTMxZDI4NWNiY2EzZGQwNjBmYmNkNzI2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDEvY29yZS9oY19hdHRyY2xvbmVub2RlMS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwyICswLDAgQEAKLVRlc3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9s
ZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2RlMQotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2RlMS5qcyBi
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2RlMS5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY2N2U4NTU4NTU3ZGJjNjNiNjhhOTFiMGU0
ODc2MTgwNmY0Y2E5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9kZTEu
anMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkg
MjAwMS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5z
dGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3Ig
SW5mb3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdo
dHMgUmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBT
b2Z0d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5
cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVS
SSB0aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmll
ciBvZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVy
biAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19h
dHRyY2xvbmVub2RlMSI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIg
YnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRo
ZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0
ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFz
eW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVy
d2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4
Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRo
ZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVw
UGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3Jl
YXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8K
LSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NM
b2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0
eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMu
ZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIs
ICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0g
ICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBj
YXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwot
ICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8v
Ci0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAg
ICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAg
IFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0v
LyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAg
ICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0
ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQXBwZW5kcyBhIHRleHQg
bm9kZSB0byBhbiBhdHRyaWJ1dGUgYW5kIGNsb25lcyB0aGUgbm9kZS4KLQotKiBAYXV0aG9yIEN1
cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVs
LTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3
dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUj
SUQtM0EwRUQwQTQKLSovCi1mdW5jdGlvbiBoY19hdHRyY2xvbmVub2RlMSgpIHsKLSAgIHZhciBz
dWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJjbG9u
ZW5vZGUxIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255
bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAg
IHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0g
ICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGxhc3RDaGlsZDsKLSAgICAgIHZhciBjbG9uZWRU
aXRsZTsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9m
KHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsK
LSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0g
ICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwot
ICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9
IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0
TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUo
InRlcmRheSIpOwotICAgICAgcmV0dmFsID0gdGl0bGVBdHRyLmFwcGVuZENoaWxkKHRleHROb2Rl
KTsKLSAgICAgIGNsb25lZFRpdGxlID0gdGl0bGVBdHRyLmNsb25lTm9kZShmYWxzZSk7Ci0gICAg
ICB0ZXh0Tm9kZS5ub2RlVmFsdWUgPSAidGV4dF9ub2RlX25vdF9jbG9uZWQiOwotCi0gICAgICB2
YWx1ZSA9IGNsb25lZFRpdGxlLnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1
ZSIsIlllc3RlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gY2xvbmVkVGl0bGUubm9kZVZh
bHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJZZXN0ZXJkYXkiLHZh
bHVlKTsKLSAgICAgICBsYXN0Q2hpbGQgPSBjbG9uZWRUaXRsZS5sYXN0Q2hpbGQ7Ci0KLSAgICAg
IHZhbHVlID0gbGFzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJsYXN0
Q2hpbGRWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIAotfQotCi0KLQotCi1mdW5jdGlv
biBydW5UZXN0KCkgewotICAgaGNfYXR0cmNsb25lbm9kZTEoKTsKLX0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2RlMS54aHRtbCBi
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyY2xvbmVub2RlMS54aHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA2ODQyMTg5ZTRmMmRmNGNiZmE4OGUx
NDhjNWZlODIyM2EzMmU5Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmNsb25lbm9k
ZTEueGh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIx
LjAiPz48P1RFU1QtU1RZTEUgUElEQVRBPz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0v
L1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBb
Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+
Ci0gICA8IUVOVElUWSBnYW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsi
PgotICAgPCFFTlRJVFkgZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1
MDsiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAg
IDwhTk9UQVRJT04gbm90YXRpb24yIFNZU1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJ
U1QgYWNyb255bSBkaXIgQ0RBVEEgImx0ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVt
YmVyIDEuLS0+Ci08aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhl
YWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9VVRGLTgiLz48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmNsb25lbm9kZTEuanMiLz48c2NyaXB0
IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRl
c3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8
cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25n
PgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9z
dXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9y
dGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVt
PkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNl
Y3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBh
biBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3Rh
Yjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3Vw
PgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVz
Ij4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgot
ICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8
Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8
dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBC
b3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5F
TVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVy
c29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRo
IFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNv
bXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5n
IFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmZpcnN0Y2hpbGQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJmaXJz
dGNoaWxkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEyYWIz
Mjg2Nzc2NDg3YzVmODQ0MjI3NGNlY2ZjOGI4NDBjYjUxZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmZpcnN0Y2hpbGQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiAr
MCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwx
L2NvcmUvaGNfYXR0cmZpcnN0Y2hpbGQKLVN0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmZpcnN0Y2hpbGQuanMgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmZpcnN0Y2hpbGQuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ZjhiNTJhZDdjNDRjM2RiYmUzMWJmNmQwODI3YTg4
YTZhZDQzN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJmaXJzdGNoaWxkLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEt
MjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0
ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9y
bWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJl
c2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdh
cmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
Ci0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0
LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhh
dCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2Yg
dGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0
dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmZp
cnN0Y2hpbGQiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxk
ZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVz
dGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0v
LwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hy
b25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2Us
IHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRp
b24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9k
eSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VT
dGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMg
dGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAg
IGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVk
ID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9m
KHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsK
LSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNf
c3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAg
ICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2go
ZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAg
ICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8g
ICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVh
Y2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVu
IGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAg
ICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJv
ZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7
Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9
ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUNoZWNrcyB0aGF0IE5vZGUuZmly
c3RDaGlsZCBmb3IgYW4gYXR0cmlidXRlIG5vZGUgY29udGFpbnMKLXRoZSBleHBlY3RlZCB0ZXh0
IG5vZGUuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0
NjAyNAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5
OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTE2OTcyNzM4OAotKi8KLWZ1bmN0aW9uIGhjX2F0dHJm
aXJzdGNoaWxkKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlv
bihidWlsZGVyLCAiaGNfYXR0cmZpcnN0Y2hpbGQiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFy
IGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAg
IHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsK
LSAgICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciBvdGhlckNoaWxkOwotICAgICAgCi0gICAg
ICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRl
ZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9j
ID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0g
ZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFj
cm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRl
czsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7
Ci0gICAgICB0ZXh0Tm9kZSA9IHRpdGxlQXR0ci5maXJzdENoaWxkOwotCi0gICAgICBhc3NlcnRO
b3ROdWxsKCJ0ZXh0Tm9kZU5vdE51bGwiLHRleHROb2RlKTsKLXZhbHVlID0gdGV4dE5vZGUubm9k
ZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImNoaWxkMUlzWWVzIiwiWWVzIix2YWx1ZSk7
Ci0gICAgICAgb3RoZXJDaGlsZCA9IHRleHROb2RlLm5leHRTaWJsaW5nOwotCi0gICAgICBhc3Nl
cnROdWxsKCJuZXh0U2libGluZ0lzTnVsbCIsb3RoZXJDaGlsZCk7Ci0gICAgb3RoZXJDaGlsZCA9
IHRleHROb2RlLnByZXZpb3VzU2libGluZzsKLQotICAgICAgYXNzZXJ0TnVsbCgicHJldmlvdXNT
aWJsaW5nSXNOdWxsIixvdGhlckNoaWxkKTsKLSAgICAKLX0KLQotCi0KLQotZnVuY3Rpb24gcnVu
VGVzdCgpIHsKLSAgIGhjX2F0dHJmaXJzdGNoaWxkKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmZpcnN0Y2hpbGQueGh0bWwgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmZpcnN0Y2hpbGQueGh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NDFhN2JmMDRjNzdhODQ4MTE2OTg4NDI1Zjk3
ODgxNmZiMzVlMWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJmaXJzdGNoaWxkLnho
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+
PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0Mv
L0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAg
PCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAg
PCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAg
IDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4K
LSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5P
VEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFj
cm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAx
Li0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJmaXJzdGNoaWxkLmpzIi8+PHNjcmlwdCB0eXBl
PSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7
IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAg
PGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgot
ICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2
ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAw
MDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9u
IHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRq
YWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9z
dHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAg
PHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJl
dGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVt
PkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+
RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4m
ZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3
IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAw
NDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5l
bCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zh
cj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2Fk
LiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAw
MDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRl
ciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zh
cj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhh
cyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJoYXNjaGlsZG5vZGVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaGFzY2hp
bGRub2Rlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzM2Uw
NzNkM2I2MWUwNWQ3M2JlNWFjNTkzN2RmYjQ4MWM0ZDU5ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJoYXNjaGlsZG5vZGVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDIgKzAsMCBAQAotVGVzdAlodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xl
dmVsMS9jb3JlL2hjX2F0dHJoYXNjaGlsZG5vZGVzCi1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJoYXNjaGlsZG5vZGVz
LmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJoYXNjaGlsZG5v
ZGVzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTQ4N2MzYmUxY2NhNDViYmQ4
ZTdiZjc5ODU4ODk4NWI3ZGMxN2U4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaGFz
Y2hpbGRub2Rlcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0KLS8qCi1Db3B5
cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2Fj
aHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29y
dGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSku
IEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUg
aW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdh
bC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAg
ICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVy
aSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewot
ICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVs
MS9jb3JlL2hjX2F0dHJoYXNjaGlsZG5vZGVzIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAt
MTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBp
cyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5n
IHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24g
ZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBz
dGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBs
ZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdo
ZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdl
KCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8K
LSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2Vw
dGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsK
LQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxs
OwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAg
ZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQo
ZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9h
ZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAg
ICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihi
dWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAg
fQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0
aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRl
c3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFz
IGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxs
b3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rp
b24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAg
ICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1D
aGVja3MgdGhhdCBOb2RlLmhhc0NoaWxkTm9kZXMoKSBpcyB0cnVlIGZvciBhbiBhdHRyaWJ1dGUg
d2l0aCBjb250ZW50LgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJ
RC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2
ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC04MTA1OTQxODcKLSovCi1mdW5jdGlvbiBo
Y19hdHRyaGFzY2hpbGRub2RlcygpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5p
dGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJoYXNjaGlsZG5vZGVzIikgIT0gbnVsbCkgcmV0
dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVz
dE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAg
ICB2YXIgaGFzQ2hpbGROb2RlczsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0g
ICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NS
ZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwg
ImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAg
ICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9
IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgaGFzQ2hpbGROb2RlcyA9
IHRpdGxlQXR0ci5oYXNDaGlsZE5vZGVzKCk7Ci0gICAgICBhc3NlcnRUcnVlKCJoYXNDaGlsZHJl
bklzVHJ1ZSIsaGFzQ2hpbGROb2Rlcyk7Ci0KLX0KLQotCi0KLQotZnVuY3Rpb24gcnVuVGVzdCgp
IHsKLSAgIGhjX2F0dHJoYXNjaGlsZG5vZGVzKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmhhc2NoaWxkbm9kZXMueGh0bWwgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmhhc2NoaWxkbm9kZXMueGh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZmQ0NzYxZDUyNzkzYzkyZWM4YzA5NDJm
NDhjOWY5MTNmOGJlYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJoYXNjaGlsZG5v
ZGVzLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0i
MS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICIt
Ly9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIg
WwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0Njsi
PgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7
Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5
NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0g
ICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRM
SVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51
bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxo
ZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJoYXNjaGlsZG5vZGVzLmpzIi8+PHNj
cmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3Rh
cnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+
Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0
cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAw
MDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMw
IE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0g
IDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RB
VEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMg
aXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFt
cDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8
L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8
cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4K
LSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4K
LSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+
UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8
ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2Rl
PlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5G
ZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBT
b3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAg
PGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29k
ZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFy
Pm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIEly
dmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZv
cmUxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyaW5zZXJ0YmVmb3JlMS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDBhNWMwNDcxNzNlMTM2MDQ4ZjA2MTllYzYxNmM5NThiMWQxNjhlNjcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUxLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0
LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUxCi1TdGF0dXMJU3VjY2Vzcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNl
cnRiZWZvcmUxLmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJp
bnNlcnRiZWZvcmUxLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWFhOTllMjFi
YjA0Yjg1ZTgwMzkyNjY1MWNjOThiNWM5ZWIwODE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRyaW5zZXJ0YmVmb3JlMS5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0K
LS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwg
Ci0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFy
Y2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5p
dmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29y
dGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAg
IC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBA
cmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0
VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1
aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUxIjsKLSAgIH0KLQotdmFyIGRvY3NM
b2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAg
ICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZp
Z3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9h
ZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0
IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAg
cmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24g
c2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsK
LSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRo
cm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1
aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NS
ZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsK
LSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9
IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlm
IChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxl
dGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRp
b25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0
ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRo
ZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBp
biBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9j
dW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQg
d2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVk
LgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkg
ewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0v
KioKLSogCi1BcHBlbmRzIGEgdGV4dCBub2RlIHRvIGFuIGF0dHJpYnV0ZSBhbmQgY2hlY2tzIGlm
IHRoZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgotCi0qIEBhdXRob3IgQ3Vy
dCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwt
MS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJ
RC05NTIyODA3MjcKLSovCi1mdW5jdGlvbiBoY19hdHRyaW5zZXJ0YmVmb3JlMSgpIHsKLSAgIHZh
ciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJp
bnNlcnRiZWZvcmUxIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIg
YWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsK
LSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5v
ZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIg
bGFzdENoaWxkOwotICAgICAgdmFyIHJlZkNoaWxkID0gbnVsbDsKLQotICAgICAgCi0gICAgICB2
YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmlu
ZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0g
bG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9j
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9u
eW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsK
LQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0g
ICAgICB0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgidGVyZGF5Iik7Ci0gICAgICByZXR2
YWwgPSB0aXRsZUF0dHIuaW5zZXJ0QmVmb3JlKHRleHROb2RlLHJlZkNoaWxkKTsKLSAgICAgIHZh
bHVlID0gdGl0bGVBdHRyLnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1ZSIs
Illlc3RlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsK
LQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7
Ci0gICAgICAgdmFsdWUgPSByZXR2YWwubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMo
InJldHZhbFZhbHVlIiwidGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgZmlyc3RDaGlsZCA9IHRpdGxl
QXR0ci5maXJzdENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGZpcnN0Q2hpbGQubm9kZVZhbHVlOwot
Ci0gICAgICBhc3NlcnRFcXVhbHMoImZpcnN0Q2hpbGRWYWx1ZSIsIlllcyIsdmFsdWUpOwotICAg
ICAgIGxhc3RDaGlsZCA9IHRpdGxlQXR0ci5sYXN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gbGFz
dENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJsYXN0Q2hpbGRWYWx1ZSIs
InRlcmRheSIsdmFsdWUpOwotICAgICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkg
ewotICAgaGNfYXR0cmluc2VydGJlZm9yZTEoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMS54aHRtbCBiL0xheW91
dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMS54aHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJiNWZhOGZhZGQ2NzUxODQ5MGY3MjYxMjE0
YTEyZmM3YThjMjEyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9y
ZTEueGh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIx
LjAiPz48P1RFU1QtU1RZTEUgUElEQVRBPz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0v
L1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBb
Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+
Ci0gICA8IUVOVElUWSBnYW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsi
PgotICAgPCFFTlRJVFkgZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1
MDsiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAg
IDwhTk9UQVRJT04gbm90YXRpb24yIFNZU1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJ
U1QgYWNyb255bSBkaXIgQ0RBVEEgImx0ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVt
YmVyIDEuLS0+Ci08aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhl
YWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9VVRGLTgiLz48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmluc2VydGJlZm9yZTEuanMiLz48c2Ny
aXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFy
dFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4K
LSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ry
b25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAw
PC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAg
Tm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAg
PGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFU
QVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBp
cyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1w
O3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwv
c3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0i
WWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxw
PgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgot
ICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgot
ICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5Q
TyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxl
bT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+
UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZl
bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNv
dXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8
ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2Rl
PkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+
bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2
aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9y
ZTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJpbnNlcnRiZWZvcmUyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODVjYjliYzdhYWQ4MzlmMzllOWRiMTc0MDIyMjZhMmJiMjdmMjM3Yi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3Qt
U3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTIKLVN0YXR1cwlTdWNjZXNzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2Vy
dGJlZm9yZTIuanMgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmlu
c2VydGJlZm9yZTIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNGY1MGUzMDAx
ZGIyOGZmMDk4ZWE2NWZiN2YwNmY3NDhlMjZjZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hj
X2F0dHJpbnNlcnRiZWZvcmUyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQot
LyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAK
LShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJj
aCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2
ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0
aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAg
LyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEBy
ZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRV
UkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3Vp
dGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTIiOwotICAgfQotCi12YXIgZG9jc0xv
YWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAg
IHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmln
dXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2Fk
aW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQg
dG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICBy
YWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBz
ZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewot
ICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhy
b3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVp
bGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1Jl
ZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewot
ICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0g
cHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYg
KGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0
ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlv
bkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRl
JzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhl
IGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGlu
IHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1
bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3
aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQu
Ci1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7
Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8q
KgotKiAKLVByZXBlbmRzIGEgdGV4dCBub2RlIHRvIGFuIGF0dHJpYnV0ZSBhbmQgY2hlY2tzIGlm
IHRoZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgotCi0qIEBhdXRob3IgQ3Vy
dCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwt
MS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJ
RC05NTIyODA3MjcKLSovCi1mdW5jdGlvbiBoY19hdHRyaW5zZXJ0YmVmb3JlMigpIHsKLSAgIHZh
ciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJp
bnNlcnRiZWZvcmUyIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIg
YWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsK
LSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5v
ZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGxhc3RDaGlsZDsKLSAgICAgIHZhciBm
aXJzdENoaWxkOwotICAgICAgdmFyIHJlZkNoaWxkOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVm
ID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0g
ICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NS
ZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFjcm9ueW1MaXN0ID0gZG9jLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0
ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5vZGUuYXR0cmlidXRlczsKLQotICAgICAg
dGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInRpdGxlIik7Ci0gICAgICB0ZXh0
Tm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgidGVyZGF5Iik7Ci0gICAgICByZWZDaGlsZCA9IHRp
dGxlQXR0ci5maXJzdENoaWxkOwotCi0gICAgICByZXR2YWwgPSB0aXRsZUF0dHIuaW5zZXJ0QmVm
b3JlKHRleHROb2RlLHJlZkNoaWxkKTsKLSAgICAgIHZhbHVlID0gdGl0bGVBdHRyLnZhbHVlOwot
Ci0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1ZSIsInRlcmRheVllcyIsdmFsdWUpOwotICAg
ICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJh
dHRyTm9kZVZhbHVlIiwidGVyZGF5WWVzIix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSByZXR2YWwu
bm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoInJldHZhbFZhbHVlIiwidGVyZGF5Iix2
YWx1ZSk7Ci0gICAgICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5maXJzdENoaWxkOwotCi0gICAg
ICB2YWx1ZSA9IGZpcnN0Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImZp
cnN0Q2hpbGRWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIGxhc3RDaGlsZCA9IHRpdGxl
QXR0ci5sYXN0Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gbGFzdENoaWxkLm5vZGVWYWx1ZTsKLQot
ICAgICAgYXNzZXJ0RXF1YWxzKCJsYXN0Q2hpbGRWYWx1ZSIsIlllcyIsdmFsdWUpOwotICAgICAg
IAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmluc2VydGJlZm9y
ZTIoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRyaW5zZXJ0YmVmb3JlMi54aHRtbCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEv
Y29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMi54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjQxZTVlNWE5NDhkZjU0YmJhZWVkODQ2ZWVmY2Y3OTg0OWM2Yjc5NS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTIueGh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz48P1RFU1QtU1RZTEUgUElEQVRB
Pz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJp
Y3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBbCi0gICA8IUVOVElUWSBhbHBoYSAiJiM5
NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+Ci0gICA8IUVOVElUWSBnYW1tYSAiJiM5
NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsiPgotICAgPCFFTlRJVFkgZXBzaWxvbiAi
JiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1MDsiPgotICAgPCFOT1RBVElPTiBub3Rh
dGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24yIFNZ
U1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJU1QgYWNyb255bSBkaXIgQ0RBVEEgImx0
ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz48dGl0bGU+aGNf
c3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZ4aHRt
bC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iaGNfYXR0cmluc2VydGJlZm9yZTIuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlw
dCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVh
ZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2Vt
PgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50
PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92
YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFz
IDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ry
b25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZl
cmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rp
b24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+
U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2Ft
bWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0g
IDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFn
ZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAg
PGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5
ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9u
Zz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2Rl
PgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMg
OTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJv
bmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2Nv
ZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3Jvbnlt
PgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUzLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMzYmI4ZDlkYjBiODFhZjMxNWEx
N2Q0NWEwMzNmZGI3NTc0MTIwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2Vy
dGJlZm9yZTMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0
CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0
cmluc2VydGJlZm9yZTMKLVN0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9k
b20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMuanMgYi9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTMuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYjI0Y2RjMWJhNDhkNmYzYWFiMDhkNTEzOTg1YTBhZTY0
Y2FiYTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmUzLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEt
MjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0
ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9y
bWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJl
c2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdh
cmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
Ci0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0
LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhh
dCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2Yg
dGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0
dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmlu
c2VydGJlZm9yZTMiOwotICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1
aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUg
dGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUu
Ci0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3lu
Y2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndp
c2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNl
cHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUg
Ym9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBh
Z2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0
ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0g
ICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9h
ZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlw
ZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRv
YzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAi
aGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAg
ICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0
Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAg
ICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwot
Ly8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAg
IGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBX
aGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8g
ICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAg
IGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUo
KSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1
cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUFwcGVuZHMgYSBkb2N1bWVu
dCBmcmFnbWVudCB0byBhbiBhdHRyaWJ1dGUgYW5kIGNoZWNrcyBpZiB0aGUgdmFsdWUgb2YKLXRo
ZSBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KLQotKiBAYXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwt
b25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9S
RUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtOTUyMjgwNzI3Ci0qLwot
ZnVuY3Rpb24gaGNfYXR0cmluc2VydGJlZm9yZTMoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBp
ZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRyaW5zZXJ0YmVmb3JlMyIpICE9
IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwotICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAg
ICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVB
dHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAgdmFyIHRlck5vZGU7Ci0gICAgICB2YXIgZGF5
Tm9kZTsKLSAgICAgIHZhciBkb2NGcmFnOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciBm
aXJzdENoaWxkOwotICAgICAgdmFyIGxhc3RDaGlsZDsKLSAgICAgIHZhciByZWZDaGlsZCA9IG51
bGw7Ci0KLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9m
KHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsK
LSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0g
ICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwot
ICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9
IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0
TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgdGVyTm9kZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgi
dGVyIik7Ci0gICAgICBkYXlOb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJkYXkiKTsKLSAgICAg
IGRvY0ZyYWcgPSBkb2MuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgcmV0dmFsID0g
ZG9jRnJhZy5hcHBlbmRDaGlsZCh0ZXJOb2RlKTsKLSAgICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBw
ZW5kQ2hpbGQoZGF5Tm9kZSk7Ci0gICAgICByZXR2YWwgPSB0aXRsZUF0dHIuaW5zZXJ0QmVmb3Jl
KGRvY0ZyYWcscmVmQ2hpbGQpOwotICAgICAgdmFsdWUgPSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAg
ICAgIGFzc2VydEVxdWFscygiYXR0clZhbHVlIiwiWWVzdGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAg
dmFsdWUgPSB0aXRsZUF0dHIubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJO
b2RlVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHJldHZhbC5ub2Rl
VmFsdWU7Ci0KLSAgICAgIGFzc2VydE51bGwoInJldHZhbFZhbHVlIix2YWx1ZSk7Ci0gICAgZmly
c3RDaGlsZCA9IHRpdGxlQXR0ci5maXJzdENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGZpcnN0Q2hp
bGQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImZpcnN0Q2hpbGRWYWx1ZSIsIlll
cyIsdmFsdWUpOwotICAgICAgIGxhc3RDaGlsZCA9IHRpdGxlQXR0ci5sYXN0Q2hpbGQ7Ci0KLSAg
ICAgIHZhbHVlID0gbGFzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJs
YXN0Q2hpbGRWYWx1ZSIsImRheSIsdmFsdWUpOwotICAgICAgIAotfQotCi0KLQotCi1mdW5jdGlv
biBydW5UZXN0KCkgewotICAgaGNfYXR0cmluc2VydGJlZm9yZTMoKTsKLX0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlMy54
aHRtbCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVm
b3JlMy54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU3OTk0NTcxNTE3ODA5
YWFjNTA5YWU5Njk3M2MwNzhiZGIxMTYxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmluc2VydGJlZm9yZTMueGh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08P3ht
bCB2ZXJzaW9uPSIxLjAiPz48P1RFU1QtU1RZTEUgUElEQVRBPz4KLTwhRE9DVFlQRSBodG1sCi0g
ICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgotICAgInhodG1sMS1z
dHJpY3QuZHRkIiBbCi0gICA8IUVOVElUWSBhbHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJl
dGEgIiYjOTQ2OyI+Ci0gICA8IUVOVElUWSBnYW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRl
bHRhICImIzk0ODsiPgotICAgPCFFTlRJVFkgZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZ
IGFscGhhICImIzk1MDsiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjEgUFVCTElDICJub3RhdGlv
bjFGaWxlIj4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24yIFNZU1RFTSAibm90YXRpb24yRmlsZSI+
Ci0gICA8IUFUVExJU1QgYWNyb255bSBkaXIgQ0RBVEEgImx0ciI+Ci1dPgotPCEtLSBUaGlzIGlz
IGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCc+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJz
ZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmluc2VydGJlZm9y
ZTMuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBs
ZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRD
b21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0
IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0g
IDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxl
PSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwv
cD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1Ro
aXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtl
bnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0
byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8
c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0i
WWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+
Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25l
czwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAw
LDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIg
Y2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+
Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9u
Zz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3Vw
PgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZh
bHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9w
PgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJv
bmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9z
dXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRp
Yy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0
cmluc2VydGJlZm9yZTQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggN2Q0MTdhNDVhOWVhZmYyYWZkYzEzMGNjNTQ3MWMzZDE0NDIzODI2NS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTQtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIw
MDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTQKLVN0YXR1
cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmluc2VydGJlZm9yZTQuanMgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cmluc2VydGJlZm9yZTQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDcwMGU2MWRjYTA0MzgwNzE1M2JiYWI0OGYzYTMzYzBkZDJmMThlMzEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3
ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBD
b25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJv
cGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGlj
cywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhl
IAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3Lncz
Lm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0q
LwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0
LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlv
biBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEv
RE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTQiOwotICAgfQot
Ci12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwot
Ly8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVm
b3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBh
cmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBk
b2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAg
ICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkK
LS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8v
Ci1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7
Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWls
ZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVD
b25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAg
ICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5k
ZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRv
Y3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAg
Ci0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1
cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJ
bml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVz
ID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBj
YWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9h
ZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3Vz
IGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMg
aXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8g
YmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xv
YWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAg
fQotfQotCi0KLS8qKgotKiAKLVByZXBlbmRzIGEgZG9jdW1lbnQgZnJhZ21lbnQgdG8gYW4gYXR0
cmlidXRlIGFuZCBjaGVja3MgaWYgdGhlIHZhbHVlIG9mCi10aGUgYXR0cmlidXRlIGlzIGNoYW5n
ZWQuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RS
LzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAy
NAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgx
MDAxL2xldmVsLW9uZS1jb3JlI0lELTk1MjI4MDcyNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJpbnNl
cnRiZWZvcmU0KCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlv
bihidWlsZGVyLCAiaGNfYXR0cmluc2VydGJlZm9yZTQiKSAhPSBudWxsKSByZXR1cm47Ci0gICAg
dmFyIGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAg
ICAgIHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1
ZTsKLSAgICAgIHZhciB0ZXJOb2RlOwotICAgICAgdmFyIGRheU5vZGU7Ci0gICAgICB2YXIgZG9j
RnJhZzsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgZmlyc3RDaGlsZDsKLSAgICAgIHZh
ciBsYXN0Q2hpbGQ7Ci0gICAgICB2YXIgcmVmQ2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NS
ZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsK
LSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRv
Y1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3Qu
aXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAg
ICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRl
ck5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoInRlciIpOwotICAgICAgZGF5Tm9kZSA9IGRvYy5j
cmVhdGVUZXh0Tm9kZSgiZGF5Iik7Ci0gICAgICBkb2NGcmFnID0gZG9jLmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKTsKLSAgICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5kQ2hpbGQodGVyTm9kZSk7
Ci0gICAgICByZXR2YWwgPSBkb2NGcmFnLmFwcGVuZENoaWxkKGRheU5vZGUpOwotICAgICAgcmVm
Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgcmV0dmFsID0gdGl0bGVBdHRy
Lmluc2VydEJlZm9yZShkb2NGcmFnLHJlZkNoaWxkKTsKLSAgICAgIHZhbHVlID0gdGl0bGVBdHRy
LnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1ZSIsInRlcmRheVllcyIsdmFs
dWUpOwotICAgICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0
RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwidGVyZGF5WWVzIix2YWx1ZSk7Ci0gICAgICAgdmFsdWUg
PSByZXR2YWwubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnROdWxsKCJyZXR2YWxWYWx1ZSIsdmFs
dWUpOwotICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgdmFs
dWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJzdENo
aWxkVmFsdWUiLCJ0ZXIiLHZhbHVlKTsKLSAgICAgICBsYXN0Q2hpbGQgPSB0aXRsZUF0dHIubGFz
dENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGxhc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFz
c2VydEVxdWFscygibGFzdENoaWxkVmFsdWUiLCJZZXMiLHZhbHVlKTsKLSAgICAgICAKLX0KLQot
Ci0KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJpbnNlcnRiZWZvcmU0KCk7Ci19
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmlu
c2VydGJlZm9yZTQueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cmluc2VydGJlZm9yZTQueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0
OTMwNTBkYjA4MTg0NWZhZTNjMDUyY2FkMmM4ZDA2YzhhY2FmMzIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU0LnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAg
KzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURP
Q1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIK
LSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0g
ICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0g
ICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+
Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBV
QkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5v
dGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4K
LTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90
aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48
c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0
dHJpbnNlcnRiZWZvcmU0LmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0
aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkg
b25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0
cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4g
ICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8
YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwv
YWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0
aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51
bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGgg
YSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFy
eTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFj
cm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4
NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25n
PlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2Rl
PgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3Jvbnlt
IHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fj
cm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBP
Y29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1
cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9h
Y3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVy
dCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8
c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+
Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVs
MS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyNzJlNjM4MzE0M2VmZjNkYjk4MTUzNzFhZTVk
M2I4YmQzN2M3ZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8v
d3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRi
ZWZvcmU1Ci1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1LmpzIGIvTGF5b3V0VGVzdHMvZG9tL3ho
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU1LmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhOTczN2VkZTBkYjRlOWJmNGZlNzUzYjhlNTEwNjE1OGU0NThmOWY0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNS5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDE1MyArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29y
bGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVj
aG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBh
bmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4g
VGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vu
c2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0g
aHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2Fy
ZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRp
ZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAg
ICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3
LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZv
cmU1IjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0g
bnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3Rpbmcg
ZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8v
ICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3Vz
Ci0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUg
c3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlz
IGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2Yg
dGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVz
ID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3Qg
ZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWls
ZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLSAgICAgICBjaGVja0ZlYXR1cmUoIlhN
TCIsIG51bGwpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFyIGRv
Y1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykg
ewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2FkZWQg
Kz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAg
aWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21w
bGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXph
dGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBs
ZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24g
dGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVk
IGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBk
b2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdl
ZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0
ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAx
KSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0K
LS8qKgotKiAKLUF0dGVtcHQgdG8gYXBwZW5kIGEgQ0RBVEFTZWN0aW9uIHRvIGFuIGF0dHJpYnV0
ZSB3aGljaCBzaG91bGQgcmVzdWx0Ci1pbiBhIEhJRVJBUkNIWV9SRVFVRVNUX0VSUi4KLQotKiBA
YXV0aG9yIEN1cnQgQXJub2xkCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMt
RE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwtb25lLWNvcmUjSUQtNjM3NjQ2MDI0Ci0qIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMtRE9NLUxldmVsLTEtMTk5ODEwMDEvbGV2ZWwt
b25lLWNvcmUjSUQtOTUyMjgwNzI3Ci0qLwotZnVuY3Rpb24gaGNfYXR0cmluc2VydGJlZm9yZTUo
KSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIs
ICJoY19hdHRyaW5zZXJ0YmVmb3JlNSIpICE9IG51bGwpIHJldHVybjsKLSAgICB2YXIgZG9jOwot
ICAgICAgdmFyIGFjcm9ueW1MaXN0OwotICAgICAgdmFyIHRlc3ROb2RlOwotICAgICAgdmFyIGF0
dHJpYnV0ZXM7Ci0gICAgICB2YXIgdGl0bGVBdHRyOwotICAgICAgdmFyIHZhbHVlOwotICAgICAg
dmFyIHRleHROb2RlOwotICAgICAgdmFyIHJldHZhbDsKLSAgICAgIHZhciByZWZDaGlsZCA9IG51
bGw7Ci0KLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9m
KHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsK
LSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0g
ICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwot
ICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9
IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0
TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgCi0JaWYoCi0JCi0JKGJ1aWxkZXIuY29udGVudFR5
cGUgPT0gInRleHQvaHRtbCIpCi0KLQkpIHsKLQkKLQl7Ci0JCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJ
dHJ5IHsKLSAgICAgICAgICAgIHRleHROb2RlID0gZG9jLmNyZWF0ZUNEQVRBU2VjdGlvbigidGVy
ZGF5Iik7Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9m
KGV4LmNvZGUpICE9ICd1bmRlZmluZWQnICYmIGV4LmNvZGUgPT0gOSk7Ci0JCX0KLQkJYXNzZXJ0
VHJ1ZSgidGhyb3dfTk9UX1NVUFBPUlRFRF9FUlIiLHN1Y2Nlc3MpOwotCX0KLQotCX0KLQkKLQkJ
ZWxzZSB7Ci0JCQl0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVDREFUQVNlY3Rpb24oInRlcmRheSIpOwot
ICAgICAgCi0JewotCQlzdWNjZXNzID0gZmFsc2U7Ci0JCXRyeSB7Ci0gICAgICAgICAgICByZXR2
YWwgPSB0aXRsZUF0dHIuaW5zZXJ0QmVmb3JlKHRleHROb2RlLHJlZkNoaWxkKTsKLSAgICAgICAg
fQotCQljYXRjaChleCkgewotICAgICAgc3VjY2VzcyA9ICh0eXBlb2YoZXguY29kZSkgIT0gJ3Vu
ZGVmaW5lZCcgJiYgZXguY29kZSA9PSAzKTsKLQkJfQotCQlhc3NlcnRUcnVlKCJ0aHJvd19ISUVS
QVJDSFlfUkVRVUVTVF9FUlIiLHN1Y2Nlc3MpOwotCX0KLQotCQl9Ci0JCi19Ci0KLQotCi0KLWZ1
bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyaW5zZXJ0YmVmb3JlNSgpOwotfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZv
cmU1LnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNl
cnRiZWZvcmU1LnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjJhZGEzZTYy
M2MyMDAzM2EwNmI4Zjc0MGIyYTRiNTFlMjhiYmVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRyaW5zZXJ0YmVmb3JlNS54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/PgotPCFET0NUWVBFIGh0
bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCi0gICAieGh0
bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsiPgotICAgPCFFTlRJ
VFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0NzsiPgotICAgPCFFTlRJ
VFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0OTsiPgotICAgPCFF
TlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQVUJMSUMgIm5v
dGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVNICJub3RhdGlvbjJG
aWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRyIj4KLV0+Ci08IS0tIFRo
aXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+PHNjcmlwdCAg
Y2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJoY19hdHRyaW5zZXJ0
YmVmb3JlNS5qcyIvPjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiBsb2Fk
Q29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0i
bG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFy
Z2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+ICAgICAgICAg
ICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0g
dGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+
Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+TWFydGhhIFJheW5v
bGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1iZXIgMiAm
YW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJl
bmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+
Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1tYTsKLSA5ODU1NDwvYWNy
b255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgot
IEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1
cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0i
WWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25nPkplbnkgT2Nvbm5vcjwv
c3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0gIDxzdXA+OTUsMDAw
PC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNz
PSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1NjwvYWNyb255bT4K
LSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8
L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCww
MDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjE4MjEg
Tm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5
PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRyaW5zZXJ0YmVmb3JlNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwv
bGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1NTEwMWEzN2E4ODQxNTU2MjNhNzE1OWRmMzg0ODkyZGIyMzlk
NWE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNi1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRlc3QJaHR0cDovL3d3dy53My5v
cmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNgot
U3RhdHVzCWZhaWx1cmUKLU1lc3NhZ2UJdGhyb3dfV1JPTkdfRE9DVU1FTlRfRVJSOiBhc3NlcnRU
cnVlIGZhaWxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJpbnNlcnRiZWZvcmU2LmpzIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU2LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkYzA0ZjYyN2RhN2E3MmM3N2E2ZmI2OTM5YThmMzI1NDk0NWE4MmE5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNi5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0
MiArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIg
Q29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgRXVy
b3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBhbmQgTWF0aGVtYXRp
Y3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlz
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vuc2UgWzFdIGluIHRo
ZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0gaHR0cDovL3d3dy53
My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2FyZS0yMDAyMTIzMQot
Ki8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdGVz
dC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAgICAqLwotZnVuY3Rp
b24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3LnczLm9yZy8yMDAx
L0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU2IjsKLSAgIH0K
LQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQotLy8K
LS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIGJl
Zm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhlcmUg
YXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAgICAg
ZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0vLyAg
ICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0ZWx5
Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3QuCi0v
LwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5pbmcn
OwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQgYnVp
bGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3JlYXRl
Q29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAKLSAg
ICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3Vu
ZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBk
b2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICAg
IAotICAgICAgdmFyIG90aGVyRG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5v
dGhlckRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgb3RoZXJEb2NSZWYgPSB0aGlzLm90
aGVyRG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKG90aGVyRG9jUmVm
LCAib3RoZXJEb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAgICAgaWYgKGRvY3NMb2Fk
ZWQgPT0gMikgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAg
ICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1
aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9
Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGNvbXBsZXRp
b24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFydGVkIGluIHNldFVwVGVz
dHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRlZCBkb2N1bWVudCBoYXMg
Y29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxv
d3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlv
biBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9PSAyKSB7Ci0gICAgICAg
IHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLS8qKgotKiAKLUF0
dGVtcHQgdG8gYXBwZW5kIGEgdGV4dCBub2RlIGZyb20gYW5vdGhlciBkb2N1bWVudCB0byBhbiBh
dHRyaWJ1dGUgd2hpY2ggc2hvdWxkIHJlc3VsdAotaW4gYSBXUk9OR19ET0NVTUVOVF9FUlIuCi0K
LSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgv
UkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTYzNzY0NjAyNAotKiBA
c2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xl
dmVsLW9uZS1jb3JlI0lELTk1MjI4MDcyNwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJpbnNlcnRiZWZv
cmU2KCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWls
ZGVyLCAiaGNfYXR0cmluc2VydGJlZm9yZTYiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRv
YzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAgIHZh
ciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsKLSAg
ICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgcmVmQ2hpbGQg
PSBudWxsOwotCi0gICAgICB2YXIgb3RoZXJEb2M7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYg
PSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAg
ICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1Jl
ZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgCi0gICAgICB2YXIgb3RoZXJEb2NSZWYgPSBu
dWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLm90aGVyRG9jKSAhPSAndW5kZWZpbmVkJykgewot
ICAgICAgICBvdGhlckRvY1JlZiA9IHRoaXMub3RoZXJEb2M7Ci0gICAgICB9Ci0gICAgICBvdGhl
ckRvYyA9IGxvYWQob3RoZXJEb2NSZWYsICJvdGhlckRvYyIsICJoY19zdGFmZiIpOwotICAgICAg
YWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAg
IHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0
Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVk
SXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gb3RoZXJEb2MuY3JlYXRlVGV4dE5vZGUo
InRlcmRheSIpOwotICAgICAgCi0JewotCQlzdWNjZXNzID0gZmFsc2U7Ci0JCXRyeSB7Ci0gICAg
ICAgICAgICByZXR2YWwgPSB0aXRsZUF0dHIuaW5zZXJ0QmVmb3JlKHRleHROb2RlLHJlZkNoaWxk
KTsKLSAgICAgICAgfQotCQljYXRjaChleCkgewotICAgICAgc3VjY2VzcyA9ICh0eXBlb2YoZXgu
Y29kZSkgIT0gJ3VuZGVmaW5lZCcgJiYgZXguY29kZSA9PSA0KTsKLQkJfQotCQlhc3NlcnRUcnVl
KCJ0aHJvd19XUk9OR19ET0NVTUVOVF9FUlIiLHN1Y2Nlc3MpOwotCX0KLQotfQotCi0KLQotCi1m
dW5jdGlvbiBydW5UZXN0KCkgewotICAgaGNfYXR0cmluc2VydGJlZm9yZTYoKTsKLX0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5zZXJ0YmVm
b3JlNi54aHRtbCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyaW5z
ZXJ0YmVmb3JlNi54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNkZmFlZGU1
YjUzYjg3NzE0MGE5YTJmZGZmODY5YzFiNjgzNjE0Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmluc2VydGJlZm9yZTYueGh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBA
Ci08P3htbCB2ZXJzaW9uPSIxLjAiPz48P1RFU1QtU1RZTEUgUElEQVRBPz4KLTwhRE9DVFlQRSBo
dG1sCi0gICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgotICAgInho
dG1sMS1zdHJpY3QuZHRkIiBbCi0gICA8IUVOVElUWSBhbHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5U
SVRZIGJldGEgIiYjOTQ2OyI+Ci0gICA8IUVOVElUWSBnYW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5U
SVRZIGRlbHRhICImIzk0ODsiPgotICAgPCFFTlRJVFkgZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwh
RU5USVRZIGFscGhhICImIzk1MDsiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjEgUFVCTElDICJu
b3RhdGlvbjFGaWxlIj4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24yIFNZU1RFTSAibm90YXRpb24y
RmlsZSI+Ci0gICA8IUFUVExJU1QgYWNyb255bSBkaXIgQ0RBVEEgImx0ciI+Ci1dPgotPCEtLSBU
aGlzIGlzIGNvbW1lbnQgbnVtYmVyIDEuLS0+Ci08aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCc+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQg
IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cmluc2Vy
dGJlZm9yZTYuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9h
ZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9
ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1h
cmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAg
ICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3Jvbnlt
IHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3Jvbnlt
PgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlu
b2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIg
JmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVy
ZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2Rl
PgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fj
cm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIK
LSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxz
dXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9
IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4K
LSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8
L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAw
MDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFz
cz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+
Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJz
PC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAs
MDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIx
IE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9k
eT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUv
aGNfYXR0cmluc2VydGJlZm9yZTctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU3LWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzE2OTMxMDI5ZTdlNTYwMzU0NDhjMjY5MzBiZjdlZmM3MGYx
YmY4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTctZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMu
b3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTcK
LVN0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTcuanMgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2
ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTcuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGYwMTQ1MDI5NTA1ZGVlY2U2ZTA3Mzc1NzE5MmJiOTgzYjY3YzEyZmIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3ho
dG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU3LmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMTYwICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRl
IFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5
LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRo
ZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdv
cmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0g
aW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8v
d3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIx
MjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRo
ZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1m
dW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3Jn
LzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTciOwot
ICAgfQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwot
Ci0vLwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdv
cmsgYmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0
aGVyZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAg
ICAgICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMK
LS8vICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRp
YXRlbHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVz
dC4KLS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVu
bmluZyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVu
dCBidWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBj
cmVhdGVDb25maWd1cmVkQnVpbGRlcigpOwotICAgICAgIGNoZWNrRmVhdHVyZSgiWE1MIiwgbnVs
bCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0g
bnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAg
ICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVs
b2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9j
c0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsK
LSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJy
b3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwot
ICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29t
cGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0
VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50
IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNo
IGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1
bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAg
ICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0q
IAotQXBwZW5kcyBhIGRvY3VtZW50IGZyYWdtZW50IGNvbnRhaW5pbmcgYSBDREFUQVNlY3Rpb24g
dG8gYW4gYXR0cmlidXRlLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8v
d3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29y
ZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00t
TGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC05NTIyODA3MjcKLSovCi1mdW5jdGlv
biBoY19hdHRyaW5zZXJ0YmVmb3JlNygpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNr
SW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJpbnNlcnRiZWZvcmU3IikgIT0gbnVsbCkg
cmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIg
dGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0g
ICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGVyTm9kZTsKLSAgICAgIHZhciBkYXlOb2RlOwot
ICAgICAgdmFyIGRvY0ZyYWc7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0Q2hp
bGQ7Ci0gICAgICB2YXIgbGFzdENoaWxkOwotICAgICAgdmFyIHJlZkNoaWxkID0gbnVsbDsKLQot
ICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5k
b2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAg
fQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIGFj
cm9ueW1MaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICB0
ZXN0Tm9kZSA9IGFjcm9ueW1MaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRyaWJ1dGVzID0gdGVzdE5v
ZGUuYXR0cmlidXRlczsKLQotICAgICAgdGl0bGVBdHRyID0gYXR0cmlidXRlcy5nZXROYW1lZEl0
ZW0oInRpdGxlIik7Ci0gICAgICB0ZXJOb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXIiKTsK
LSAgICAgIAotCWlmKAotCQotCShidWlsZGVyLmNvbnRlbnRUeXBlID09ICJ0ZXh0L2h0bWwiKQot
Ci0JKSB7Ci0JCi0JewotCQlzdWNjZXNzID0gZmFsc2U7Ci0JCXRyeSB7Ci0gICAgICAgICAgICBk
YXlOb2RlID0gZG9jLmNyZWF0ZUNEQVRBU2VjdGlvbigiZGF5Iik7Ci0gICAgICAgIH0KLQkJY2F0
Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9mKGV4LmNvZGUpICE9ICd1bmRlZmluZWQn
ICYmIGV4LmNvZGUgPT0gOSk7Ci0JCX0KLQkJYXNzZXJ0VHJ1ZSgidGhyb3dfTk9UX1NVUFBPUlRF
RF9FUlIiLHN1Y2Nlc3MpOwotCX0KLQotCX0KLQkKLQkJZWxzZSB7Ci0JCQlkYXlOb2RlID0gZG9j
LmNyZWF0ZUNEQVRBU2VjdGlvbigiZGF5Iik7Ci0gICAgICBkb2NGcmFnID0gZG9jLmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKTsKLSAgICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5kQ2hpbGQodGVy
Tm9kZSk7Ci0gICAgICByZXR2YWwgPSBkb2NGcmFnLmFwcGVuZENoaWxkKGRheU5vZGUpOwotICAg
ICAgCi0JewotCQlzdWNjZXNzID0gZmFsc2U7Ci0JCXRyeSB7Ci0gICAgICAgICAgICByZXR2YWwg
PSB0aXRsZUF0dHIuaW5zZXJ0QmVmb3JlKGRvY0ZyYWcscmVmQ2hpbGQpOwotICAgICAgICB9Ci0J
CWNhdGNoKGV4KSB7Ci0gICAgICBzdWNjZXNzID0gKHR5cGVvZihleC5jb2RlKSAhPSAndW5kZWZp
bmVkJyAmJiBleC5jb2RlID09IDMpOwotCQl9Ci0JCWFzc2VydFRydWUoInRocm93X0hJRVJBUkNI
WV9SRVFVRVNUX0VSUiIsc3VjY2Vzcyk7Ci0JfQotCi0JCX0KLQkKLX0KLQotCi0KLQotZnVuY3Rp
b24gcnVuVGVzdCgpIHsKLSAgIGhjX2F0dHJpbnNlcnRiZWZvcmU3KCk7Ci19CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTcu
eGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJl
Zm9yZTcueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1OTI4YzA4NWViOWM3
ZWMzZGE1NWFkMTdkYWQ4YTY0NjI5MzhiYzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJpbnNlcnRiZWZvcmU3LnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94
bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAot
ICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEt
c3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBi
ZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBk
ZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElU
WSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRp
b24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUi
PgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBp
cyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFy
c2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJpbnNlcnRiZWZv
cmU3LmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21w
bGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2Fk
Q29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJnYXJl
dCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAgIAot
ICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRs
ZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8
L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHNU
aGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZhbXA7
ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVuY2Ug
dG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAg
PHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9
IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3Jvbnlt
PgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9u
ZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEw
MCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMi
IGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9w
PgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJv
bmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1
cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ilkm
YWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwv
cD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ry
b25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwv
c3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBOb3Jk
aWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJsYXN0Y2hpbGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9j
b3JlL2hjX2F0dHJsYXN0Y2hpbGQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkYTQxYzI0ZDkxYjljNjgwMTNjMzQ2YTJmMjQ5MjU1NDc3MzMwNTY5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNoaWxkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0
LVN1aXRlL2xldmVsMS9jb3JlL2hjX2F0dHJsYXN0Y2hpbGQKLVN0YXR1cwlTdWNjZXNzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmxhc3RjaGls
ZC5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNoaWxk
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGY3MzQyOWNkZTIxZWE4Y2IyYzEz
MTJmNDBjOTNkOTRiM2M4Mzc4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNo
aWxkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDD
gsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRz
IEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAot
Zm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAot
UmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OC
wq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIv
Y29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0
cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50
aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICBy
ZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUv
aGNfYXR0cmxhc3RjaGlsZCI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12
YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5
IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBz
dWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMs
IGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90
aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhl
IGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5n
IHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNl
dFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAg
Y3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAg
Ly8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRv
Y3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlm
ICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRo
aXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRv
YyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7
Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAg
fSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgp
OwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0K
LS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8v
ICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0v
LyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQs
Ci0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8v
ICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21w
bGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdl
U3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotQ2hlY2tzIHRoYXQg
Tm9kZS5sYXN0Q2hpbGQgZm9yIGFuIGF0dHJpYnV0ZSBub2RlIGNvbnRhaW5zCi10aGUgZXhwZWN0
ZWQgdGV4dCBub2RlLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJ
RC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2
ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02MUFEMDlGQgotKi8KLWZ1bmN0aW9uIGhj
X2F0dHJsYXN0Y2hpbGQoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxp
emF0aW9uKGJ1aWxkZXIsICJoY19hdHRybGFzdGNoaWxkIikgIT0gbnVsbCkgcmV0dXJuOwotICAg
IHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0g
ICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFs
dWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgb3RoZXJDaGlsZDsKLSAgICAgIAot
ICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAn
dW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAg
IGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlz
dCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUg
PSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJp
YnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRs
ZSIpOwotICAgICAgdGV4dE5vZGUgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgYXNz
ZXJ0Tm90TnVsbCgidGV4dE5vZGVOb3ROdWxsIix0ZXh0Tm9kZSk7Ci12YWx1ZSA9IHRleHROb2Rl
Lm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJjaGlsZDFJc1llcyIsIlllcyIsdmFs
dWUpOwotICAgICAgIG90aGVyQ2hpbGQgPSB0ZXh0Tm9kZS5uZXh0U2libGluZzsKLQotICAgICAg
YXNzZXJ0TnVsbCgibmV4dFNpYmxpbmdJc051bGwiLG90aGVyQ2hpbGQpOwotICAgIG90aGVyQ2hp
bGQgPSB0ZXh0Tm9kZS5wcmV2aW91c1NpYmxpbmc7Ci0KLSAgICAgIGFzc2VydE51bGwoInByZXZp
b3VzU2libGluZ0lzTnVsbCIsb3RoZXJDaGlsZCk7Ci0gICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9u
IHJ1blRlc3QoKSB7Ci0gICBoY19hdHRybGFzdGNoaWxkKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmxhc3RjaGlsZC54aHRtbCBiL0xh
eW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNoaWxkLnhodG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWQ0MmQ4YmE4YTkzOTJkY2RjOGFmYmU1NzRm
YTkyYTVhOWVhODgwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybGFzdGNoaWxkLnho
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+
PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0Mv
L0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAg
PCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAg
PCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAg
IDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4K
LSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5P
VEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFj
cm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAx
Li0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJsYXN0Y2hpbGQuanMiLz48c2NyaXB0IHR5cGU9
J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsg
fTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAg
PGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8
Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0g
IDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZl
LiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAw
MDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24g
d2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGph
Y2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0
cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8
dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0
YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5E
ZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZk
ZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcg
SXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0
PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVs
IERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQu
IERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAw
NTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVy
IFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFz
IDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6ZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6ZS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZjg1YjUxZGM2MTFk
MjdkOWE2ZDk3ZDk2ODYxYzgwMzBjMjhjNDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJub3JtYWxpemUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1U
ZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNf
YXR0cm5vcm1hbGl6ZQotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybm9ybWFsaXplLmpzIGIvTGF5b3V0VGVzdHMvZG9t
L3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3JtYWxpemUuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ5ZjVlMjk2MmI2NjQwNjFmMTRlNjUyNTg0OWJjMTkwNTE1ODgxM2EuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJub3JtYWxpemUuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwxMzMgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdvcmxkIFdp
ZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xv
Z3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3MgYW5kIE1h
dGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQuIFRoaXMg
d29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNlbnNlIFsx
XSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFdIGh0dHA6
Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAw
MjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50aWZpZXMg
dGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0gICAgKi8K
LWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5v
cmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRybm9ybWFsaXplIjsKLSAg
IH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVsbDsKLQot
Ly8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJhbWV3b3Jr
IGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAgSWYgdGhl
cmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0vLyAgICAg
ICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3RhdHVzCi0v
LyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGltbWVkaWF0
ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhlIHRlc3Qu
Ci0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0gJ3J1bm5p
bmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9jdW1lbnQg
YnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVyID0gY3Jl
YXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0gICAgICAK
LSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0g
J3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAg
ICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAg
ICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRVcFBhZ2VT
dGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0gICAgCWNh
dGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVwUGFnZVN0
YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBtZXRob2Qg
aXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNocm9ub3Vz
IGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBzeW5jaHJv
bm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBhZ2Ugc3Rh
dHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRoZSB0ZXN0
IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlmICgrK2Rv
Y3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwot
ICAgIH0KLX0KLQotCi0vKioKLSogCi1BcHBlbmRzIGEgdGV4dCBub2RlIHRvIGFuIGF0dHJpYnV0
ZSwgbm9ybWFsaXplcyB0aGUgYXR0cmlidXRlCi1hbmQgY2hlY2tzIGZvciBhIHNpbmdsZSBjaGls
ZCBub2RlLgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2
NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0x
OTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC0xNjJDRjA4MwotKi8KLWZ1bmN0aW9uIGhjX2F0dHJu
b3JtYWxpemUoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9u
KGJ1aWxkZXIsICJoY19hdHRybm9ybWFsaXplIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBk
b2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2
YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0g
ICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0Q2hp
bGQ7Ci0gICAgICB2YXIgc2Vjb25kQ2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBu
dWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAg
ICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwg
ImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgz
KTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRs
ZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2Rl
ID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICAgIHJldHZhbCA9IHRpdGxlQXR0
ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0gICAgICB0ZXh0Tm9kZSA9IGRvYy5jcmVhdGVUZXh0
Tm9kZSgiIik7Ci0gICAgICByZXR2YWwgPSB0aXRsZUF0dHIuYXBwZW5kQ2hpbGQodGV4dE5vZGUp
OwotICAgICAgdGVzdE5vZGUubm9ybWFsaXplKCk7Ci0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5u
b2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlllc3RlcmRh
eSIsdmFsdWUpOwotICAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQot
ICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxz
KCJmaXJzdENoaWxkVmFsdWUiLCJZZXN0ZXJkYXkiLHZhbHVlKTsKLSAgICAgICBzZWNvbmRDaGls
ZCA9IGZpcnN0Q2hpbGQubmV4dFNpYmxpbmc7Ci0KLSAgICAgIGFzc2VydE51bGwoInNlY29uZENo
aWxkSXNOdWxsIixzZWNvbmRDaGlsZCk7Ci0gICAgCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRl
c3QoKSB7Ci0gICBoY19hdHRybm9ybWFsaXplKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cm5vcm1hbGl6ZS54aHRtbCBiL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybm9ybWFsaXplLnhodG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODhjMmQyYzdlODk0MjEzMTY4ZTNkNDQwMGZiZGQ4OGRm
NTk2YWQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRybm9ybWFsaXplLnhodG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNU
LVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBY
SFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJ
VFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJ
VFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5U
SVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwh
Tk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9O
IG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0g
ZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgot
PGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04
Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJub3JtYWxpemUuanMiLz48c2NyaXB0IHR5cGU9J3RleHQv
amF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2Ny
aXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVN
UDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5B
Y2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+
RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxs
YXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2Vt
PgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBF
bnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBD
REFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4K
LSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZl
bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFs
bGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAw
MzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRt
ZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8
L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5n
LCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4K
LSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVj
dG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8
YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxh
cywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+
Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNp
YWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8
YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4
PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNoaWxkMS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmNDI2ZjY3ZTEwMjc3
ODg1NDBmNGFjMzJmMjhlNjBmYzcwODFlMWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJyZW1vdmVjaGlsZDEtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBA
Ci1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUv
aGNfYXR0cnJlbW92ZWNoaWxkMQotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVtb3ZlY2hpbGQxLmpzIGIvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZW1vdmVjaGlsZDEuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmOTg3NDZhNjlmZjUyOWExYmQ3YWY4NDNhZGRiNTNi
NmQyYzhkNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJyZW1vdmVjaGlsZDEuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAw
MS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0
dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5m
b3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMg
UmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0
d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmln
aHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0
aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBv
ZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAi
aHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRy
cmVtb3ZlY2hpbGQxIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBi
dWlsZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhl
IHRlc3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRl
LgotLy8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5
bmNocm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3
aXNlLCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhj
ZXB0aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhl
IGJvZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQ
YWdlU3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVh
dGVzIHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwot
ICAgICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xv
YWRlZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5
cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5k
b2M7Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwg
ImhjX3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAg
ICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNh
dGNoKGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0g
ICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8K
LS8vICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAg
ICBlYWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAg
V2hlbiBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8v
ICAgICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAg
ICBib2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRl
KCkgewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0
dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1SZW1vdmVzIHRoZSBjaGls
ZCBub2RlIG9mIGFuIGF0dHJpYnV0ZSBhbmQgY2hlY2tzIHRoYXQgdGhlIHZhbHVlIGlzIGVtcHR5
LgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8x
OTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQK
LSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAw
MS9sZXZlbC1vbmUtY29yZSNJRC0xNzM0ODM0MDY2Ci0qLwotZnVuY3Rpb24gaGNfYXR0cnJlbW92
ZWNoaWxkMSgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24o
YnVpbGRlciwgImhjX2F0dHJyZW1vdmVjaGlsZDEiKSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFy
IGRvYzsKLSAgICAgIHZhciBhY3JvbnltTGlzdDsKLSAgICAgIHZhciB0ZXN0Tm9kZTsKLSAgICAg
IHZhciBhdHRyaWJ1dGVzOwotICAgICAgdmFyIHRpdGxlQXR0cjsKLSAgICAgIHZhciB2YWx1ZTsK
LSAgICAgIHZhciB0ZXh0Tm9kZTsKLSAgICAgIHZhciByZXR2YWw7Ci0gICAgICB2YXIgZmlyc3RD
aGlsZDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9m
KHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsK
LSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0g
ICAgICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwot
ICAgICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9
IHRlc3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0
TmFtZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgdGV4dE5vZGUgPSB0aXRsZUF0dHIuZmlyc3RDaGls
ZDsKLQotICAgICAgYXNzZXJ0Tm90TnVsbCgiYXR0ckNoaWxkTm90TnVsbCIsdGV4dE5vZGUpOwot
cmV0dmFsID0gdGl0bGVBdHRyLnJlbW92ZUNoaWxkKHRleHROb2RlKTsKLSAgICAgIHZhbHVlID0g
dGl0bGVBdHRyLnZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1ZSIsIiIsdmFs
dWUpOwotICAgICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0
RXF1YWxzKCJhdHRyTm9kZVZhbHVlIiwiIix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSByZXR2YWwu
bm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoInJldHZhbFZhbHVlIiwiWWVzIix2YWx1
ZSk7Ci0gICAgICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5maXJzdENoaWxkOwotCi0gICAgICBh
c3NlcnROdWxsKCJmaXJzdENoaWxkTnVsbCIsZmlyc3RDaGlsZCk7Ci0gICAgCi19Ci0KLQotCi0K
LWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRycmVtb3ZlY2hpbGQxKCk7Ci19CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlbW92ZWNo
aWxkMS54aHRtbCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVt
b3ZlY2hpbGQxLnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWFhZmM1NDg1
YWIyNTlhZjI2NGEwZWU3ZTNhN2RjNmIxZjE3MTI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9o
Y19hdHRycmVtb3ZlY2hpbGQxLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAot
PD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRt
bAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRt
bDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElU
WSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElU
WSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVO
VElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90
YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZp
bGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhp
cyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBj
aGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJyZW1vdmVj
aGlsZDEuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENv
bXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9Imxv
YWRDb21wbGV0ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdh
cmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAg
Ci0gIDxzdXA+NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xk
c1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFt
cDtlbnQyOwotVGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5j
ZSB0byBhIHRhYiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgot
ICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRs
ZT0iWWVzIiBjbGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9u
eW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBK
b25lczwvc3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+
MTAwLDAwMDwvc3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9Illl
cyIgY2xhc3M9Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8
L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0
cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwv
c3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0i
WSZhbHBoYTsiPjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9z
dHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAw
PC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5v
cmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cnJlcGxhY2VjaGlsZDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQxLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzYxN2JmNjNjODZjZWMzZjY5NTZmYTYwMTZjZWE1ZjM4MGJiNjE0
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3Jn
LzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEKLVN0
YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2Nv
cmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEuanMgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwx
L2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGZmNDk5ZTVkMzBlZDUyZWE2YzZlYmVkYmZjNGU1ZmNmOWVmYTc0YTMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJyZXBsYWNlY2hpbGQxLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MTM1ICswLDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdl
YiBDb25zb3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBF
dXJvcGVhbiBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1h
dGljcywgS2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsg
aXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4g
dGhlIAotaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3
LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMx
Ci0qLwotCi0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0
ZXN0LgotICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5j
dGlvbiBnZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIw
MDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDEiOwotICAg
fQotCi12YXIgZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0v
LwotLy8gICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsg
YmVmb3JlCi0vLyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVy
ZSBhcmUgbm8gY29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAg
ICBkb2N1bWVudCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8v
ICAgICAgICBpcyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRl
bHkKLS8vICAgICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4K
LS8vCi1mdW5jdGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmlu
Zyc7Ci0gICB0cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBi
dWlsZGVyLCBtYXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVh
dGVDb25maWd1cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAot
ICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAn
dW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAg
IGRvY3NMb2FkZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAg
ICAgCi0gICAgICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0
YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0
Y2hJbml0aWFsaXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgb24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMg
bG9hZCBzdGFydGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9u
b3VzIGxvYWRlZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0
dXMgaXMgY2hhbmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3Qg
dG8gYmUgZXhlY3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9j
c0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0g
ICAgfQotfQotCi0KLS8qKgotKiAKLVJlcGxhY2VzIGEgdGV4dCBub2RlIG9mIGFuIGF0dHJpYnV0
ZSBhbmQgY2hlY2tzIGlmIHRoZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgot
Ci0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4
L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9s
ZXZlbC1vbmUtY29yZSNJRC03ODU4ODczMDcKLSovCi1mdW5jdGlvbiBoY19hdHRycmVwbGFjZWNo
aWxkMSgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVp
bGRlciwgImhjX2F0dHJyZXBsYWNlY2hpbGQxIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBk
b2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2
YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0g
ICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0Q2hp
bGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0
aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0g
ICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAg
ICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAg
ICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHJpYnV0ZXMgPSB0
ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0dHIgPSBhdHRyaWJ1dGVzLmdldE5h
bWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKCJ0
ZXJkYXkiKTsKLSAgICAgIGZpcnN0Q2hpbGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAg
ICAgYXNzZXJ0Tm90TnVsbCgiYXR0ckNoaWxkTm90TnVsbCIsZmlyc3RDaGlsZCk7Ci1yZXR2YWwg
PSB0aXRsZUF0dHIucmVwbGFjZUNoaWxkKHRleHROb2RlLGZpcnN0Q2hpbGQpOwotICAgICAgdmFs
dWUgPSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0clZhbHVlIiwi
dGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSB0aXRsZUF0dHIubm9kZVZhbHVlOwotCi0g
ICAgICBhc3NlcnRFcXVhbHMoImF0dHJOb2RlVmFsdWUiLCJ0ZXJkYXkiLHZhbHVlKTsKLSAgICAg
ICB2YWx1ZSA9IHJldHZhbC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygicmV0dmFs
VmFsdWUiLCJZZXMiLHZhbHVlKTsKLSAgICAgICBmaXJzdENoaWxkID0gdGl0bGVBdHRyLmZpcnN0
Q2hpbGQ7Ci0KLSAgICAgIHZhbHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFz
c2VydEVxdWFscygiZmlyc3RDaGlsZFZhbHVlIiwidGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgCi19
Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRycmVwbGFjZWNoaWxkMSgp
OwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0
dHJyZXBsYWNlY2hpbGQxLnhodG1sIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJyZXBsYWNlY2hpbGQxLnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4NmI1YTg4NmI4OGNkNzZlZjA0NDk0YWVkMmY1ZTRhMTI2MDQ2MWUxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMS54aHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDYwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/Pgot
PCFET0NUWVBFIGh0bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8v
RU4iCi0gICAieGh0bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsi
PgotICAgPCFFTlRJVFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0Nzsi
PgotICAgPCFFTlRJVFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0
OTsiPgotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9u
MSBQVUJMSUMgIm5vdGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVN
ICJub3RhdGlvbjJGaWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAibHRyIj4K
LV0+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFm
ZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpz
Ii8+PHNjcmlwdCAgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJo
Y19hdHRycmVwbGFjZWNoaWxkMS5qcyIvPjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5m
dW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9oZWFkPjxi
b2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwPgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0g
IDxzdHJvbmc+TWFyZ2FyZXQgTWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2Nv
ZGU+ICAgICAgICAgICAKLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4K
LSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTIzMCBOb3J0aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1
NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJvbmc+
TWFydGhhIFJheW5vbGRzVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVyZW5j
ZSBudW1iZXIgMiAmYW1wO2VudDI7Ci1UaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3
aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZhbXA7dGFiOzwvc3Ryb25nPgotICA8Y29kZT5TZWNy
ZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0g
IDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1tYTsK
LSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0
cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwv
Y29kZT4KLSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmRlbHRhOzwvdmFyPgotICA8YWNy
b255bSB0aXRsZT0iWWVzIiBjbGFzcz0iTm8iPlBPIEJveCAyNyBJcnZpbmcsIHRleGFzIDk4NTUz
PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ryb25nPkpl
bnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8L2NvZGU+Ci0g
IDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxl
PSJZZXMiIGNsYXNzPSJZJmFscGhhOyI+MjcgU291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1
NjwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5S
b2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNvZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4K
LSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZhcj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxl
PSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4YXMgOTg1NTg8L2Fjcm9ueW0+Ci0g
PC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9s
ZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDItZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2ZhZTU1NjY4OGMzZDBkNDhmNjVhODlk
OGNiNmQ1MDg0NmU2NmEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNo
aWxkMi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRlc3QJaHR0
cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRycmVw
bGFjZWNoaWxkMgotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94
aHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMi5qcyBiL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMi5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzI2ZDMxNmQyZmEyNmEzYmQ5M2VlMjA5YmY4YWY2ZDZkOTQzYTMy
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDIuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0
IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9m
IFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRp
Y3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2
ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBM
aWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQot
WzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29m
dHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlk
ZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0
Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDov
L3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFj
ZWNoaWxkMiI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRl
ciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0
aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8v
Ci0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJv
bm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwg
dGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlv
biBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5
IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0
YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0
ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAg
YnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQg
PSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2Yo
dGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwot
ICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19z
dGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAg
ICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChl
eCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAg
ICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAg
IFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFj
aCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4g
ZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAg
IHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9k
eSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsK
LSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0g
J2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotUmVwbGFjZXMgYSB0ZXh0IG5vZGUg
b2YgYW4gYXR0cmlidXRlIHdpdGggYSBkb2N1bWVudCBmcmFnbWVudCBhbmQgY2hlY2tzIGlmIHRo
ZSB2YWx1ZSBvZgotdGhlIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgotCi0qIEBhdXRob3IgQ3VydCBB
cm5vbGQKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0x
OTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC02Mzc2NDYwMjQKLSogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUtY29yZSNJRC03
ODU4ODczMDcKLSovCi1mdW5jdGlvbiBoY19hdHRycmVwbGFjZWNoaWxkMigpIHsKLSAgIHZhciBz
dWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhjX2F0dHJyZXBs
YWNlY2hpbGQyIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNy
b255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAg
ICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGVyTm9kZTsK
LSAgICAgIHZhciBkYXlOb2RlOwotICAgICAgdmFyIGRvY0ZyYWc7Ci0gICAgICB2YXIgcmV0dmFs
OwotICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxs
OwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAg
ZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwgImRv
YyIsICJoY19zdGFmZiIpOwotICAgICAgYWNyb255bUxpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImFjcm9ueW0iKTsKLSAgICAgIHRlc3ROb2RlID0gYWNyb255bUxpc3QuaXRlbSgzKTsK
LSAgICAgIGF0dHJpYnV0ZXMgPSB0ZXN0Tm9kZS5hdHRyaWJ1dGVzOwotCi0gICAgICB0aXRsZUF0
dHIgPSBhdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGl0bGUiKTsKLSAgICAgIHRlck5vZGUgPSBk
b2MuY3JlYXRlVGV4dE5vZGUoInRlciIpOwotICAgICAgZGF5Tm9kZSA9IGRvYy5jcmVhdGVUZXh0
Tm9kZSgiZGF5Iik7Ci0gICAgICBkb2NGcmFnID0gZG9jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQo
KTsKLSAgICAgIHJldHZhbCA9IGRvY0ZyYWcuYXBwZW5kQ2hpbGQodGVyTm9kZSk7Ci0gICAgICBy
ZXR2YWwgPSBkb2NGcmFnLmFwcGVuZENoaWxkKGRheU5vZGUpOwotICAgICAgZmlyc3RDaGlsZCA9
IHRpdGxlQXR0ci5maXJzdENoaWxkOwotCi0gICAgICBhc3NlcnROb3ROdWxsKCJhdHRyQ2hpbGRO
b3ROdWxsIixmaXJzdENoaWxkKTsKLXJldHZhbCA9IHRpdGxlQXR0ci5yZXBsYWNlQ2hpbGQoZG9j
RnJhZyxmaXJzdENoaWxkKTsKLSAgICAgIHZhbHVlID0gdGl0bGVBdHRyLnZhbHVlOwotCi0gICAg
ICBhc3NlcnRFcXVhbHMoImF0dHJWYWx1ZSIsInRlcmRheSIsdmFsdWUpOwotICAgICAgIHZhbHVl
ID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyTm9kZVZh
bHVlIiwidGVyZGF5Iix2YWx1ZSk7Ci0gICAgICAgdmFsdWUgPSByZXR2YWwubm9kZVZhbHVlOwot
Ci0gICAgICBhc3NlcnRFcXVhbHMoInJldHZhbFZhbHVlIiwiWWVzIix2YWx1ZSk7Ci0gICAgICAg
Zmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5maXJzdENoaWxkOwotCi0gICAgICB2YWx1ZSA9IGZpcnN0
Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoImZpcnN0Q2hpbGRWYWx1ZSIs
InRlciIsdmFsdWUpOwotICAgICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewot
ICAgaGNfYXR0cnJlcGxhY2VjaGlsZDIoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Rv
bS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMi54aHRtbCBiL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRycmVwbGFjZWNoaWxkMi54aHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJhMzQyNDExZDg2MjNjOGFiZWQ2NmRhMmI2Yjg0
ZmE4YzMwNzg0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnJlcGxhY2VjaGlsZDIu
eGh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAi
Pz48P1RFU1QtU1RZTEUgUElEQVRBPz4KLTwhRE9DVFlQRSBodG1sCi0gICBQVUJMSUMgIi0vL1cz
Qy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgotICAgInhodG1sMS1zdHJpY3QuZHRkIiBbCi0g
ICA8IUVOVElUWSBhbHBoYSAiJiM5NDU7Ij4KLSAgIDwhRU5USVRZIGJldGEgIiYjOTQ2OyI+Ci0g
ICA8IUVOVElUWSBnYW1tYSAiJiM5NDc7Ij4KLSAgIDwhRU5USVRZIGRlbHRhICImIzk0ODsiPgot
ICAgPCFFTlRJVFkgZXBzaWxvbiAiJiM5NDk7Ij4KLSAgIDwhRU5USVRZIGFscGhhICImIzk1MDsi
PgotICAgPCFOT1RBVElPTiBub3RhdGlvbjEgUFVCTElDICJub3RhdGlvbjFGaWxlIj4KLSAgIDwh
Tk9UQVRJT04gbm90YXRpb24yIFNZU1RFTSAibm90YXRpb24yRmlsZSI+Ci0gICA8IUFUVExJU1Qg
YWNyb255bSBkaXIgQ0RBVEEgImx0ciI+Ci1dPgotPCEtLSBUaGlzIGlzIGNvbW1lbnQgbnVtYmVy
IDEuLS0+Ci08aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGhlYWQ+
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9VVRGLTgiLz48dGl0bGU+aGNfc3RhZmY8L3RpdGxlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9InNlbGZ4aHRtbC5qcyIvPjxzY3JpcHQgIGNoYXJzZXQ9IlVURi04IiB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaGNfYXR0cnJlcGxhY2VjaGlsZDIuanMiLz48c2NyaXB0
IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRl
c3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8
cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25n
PgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+NTYsMDAwPC9z
dXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiPjEyMzAgTm9y
dGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVt
PkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMgYSBDREFUQVNl
Y3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwotVGhpcyBpcyBh
biBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmYW1wO3Rh
Yjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3Vw
PgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVz
Ij4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgot
ICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ryb25nPgotICA8
Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwvc3VwPgotICA8
dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIj5QTyBC
b3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5F
TVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAgPGNvZGU+UGVy
c29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsiPjI3IFNvdXRo
IFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+
RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNv
bXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFs
ZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5n
IFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZh
bHVlMS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NjliNDMy
YzBhZjAwMmFhZGNjYTg2ZTBjNjRhZmEwMDQ5MGE0YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3Jl
L2hjX2F0dHJzZXR2YWx1ZTEtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCww
IEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2Nv
cmUvaGNfYXR0cnNldHZhbHVlMQotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUxLmpzIGIvTGF5b3V0VGVz
dHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTEuanMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQ1N2Y3YjZkOGJhN2FiNjM0NjZkN2RhZDY0M2JkYTc0NTE3MjA2
ZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTEuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxMzUgKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0IFdv
cmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRl
Y2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRpY3Mg
YW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2ZWQu
IFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBMaWNl
bnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQotWzFd
IGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdh
cmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlkZW50
aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0Ci0g
ICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDovL3d3
dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUx
IjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVs
bDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJh
bWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAg
SWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0v
LyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3Rh
dHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGlt
bWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhl
IHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0g
J3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9j
dW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVy
ID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0g
ICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRv
YykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9
Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7
Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0g
ICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVw
UGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBt
ZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNo
cm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBz
eW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBh
Z2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRo
ZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlm
ICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxl
dGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1TZXRzIEF0dHIudmFsdWUgb24gYW4gYXR0cmli
dXRlIHRoYXQgb25seSBoYXMgYSBzaW1wbGUgdmFsdWUuCi0KLSogQGF1dGhvciBDdXJ0IEFybm9s
ZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLURPTS1MZXZlbC0xLTE5OTgx
MDAxL2xldmVsLW9uZS1jb3JlI0lELTIyMTY2MjQ3NAotKi8KLWZ1bmN0aW9uIGhjX2F0dHJzZXR2
YWx1ZTEoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1
aWxkZXIsICJoY19hdHRyc2V0dmFsdWUxIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7
Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIgdGVzdE5vZGU7Ci0gICAgICB2YXIg
YXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0gICAgICB2YXIgdmFsdWU7Ci0gICAg
ICB2YXIgcmV0dmFsOwotICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIgb3RoZXJDaGls
ZDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRo
aXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAg
ICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAg
ICBhY3JvbnltTGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAg
ICAgdGVzdE5vZGUgPSBhY3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRl
c3ROb2RlLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFt
ZWRJdGVtKCJ0aXRsZSIpOwotICAgICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5maXJzdENoaWxk
OwotCi0gICAgICBhc3NlcnROb3ROdWxsKCJhdHRyQ2hpbGROb3ROdWxsIixmaXJzdENoaWxkKTsK
LXRpdGxlQXR0ci52YWx1ZSA9ICJUb21vcnJvdyI7Ci0KLSAgICAgIGZpcnN0Q2hpbGQubm9kZVZh
bHVlID0gImltcGwgcmV1c2VkIG5vZGUiOwotCi0gICAgICB2YWx1ZSA9IHRpdGxlQXR0ci52YWx1
ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJhdHRyVmFsdWUiLCJUb21vcnJvdyIsdmFsdWUpOwot
ICAgICAgIHZhbHVlID0gdGl0bGVBdHRyLm5vZGVWYWx1ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxz
KCJhdHRyTm9kZVZhbHVlIiwiVG9tb3Jyb3ciLHZhbHVlKTsKLSAgICAgICBmaXJzdENoaWxkID0g
dGl0bGVBdHRyLmxhc3RDaGlsZDsKLQotICAgICAgdmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1
ZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJmaXJzdENoaWxkVmFsdWUiLCJUb21vcnJvdyIsdmFs
dWUpOwotICAgICAgIG90aGVyQ2hpbGQgPSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOwotCi0gICAg
ICBhc3NlcnROdWxsKCJuZXh0U2libGluZ0lzTnVsbCIsb3RoZXJDaGlsZCk7Ci0gICAgCi19Ci0K
LQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBoY19hdHRyc2V0dmFsdWUxKCk7Ci19CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZh
bHVlMS54aHRtbCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0
dmFsdWUxLnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjQ5ZWQ0NWE4MTU5
ZWE4ZjljODRlNGUyNjVkNzhkMzAxOGZjNDMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyc2V0dmFsdWUxLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotPD94bWwg
dmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAg
UFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3Ry
aWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRh
ICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0
YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBh
bHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24x
RmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgot
ICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhpcyBpcyBj
b21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBjaGFyc2V0
PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2F0dHJzZXR2YWx1ZTEuanMi
Lz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkg
eyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0
ZSgpIj4KLSA8cD4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRp
bjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2RlPiAgICAgICAgICAgCi0gIDxzdXA+
NTYsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMi
PjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRleGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8
cD4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkc1RoaXMgaXMg
YSBDREFUQVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmFtcDtlbnQyOwot
VGhpcyBpcyBhbiBhZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRh
YiAmYW1wO3RhYjs8L3N0cm9uZz4KLSAgPGNvZGU+U2VjcmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1
LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBj
bGFzcz0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0gPC9w
PgotIDxwPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwvc3Ry
b25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAwMDwv
c3VwPgotICA8dmFyPiZkZWx0YTs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
Ik5vIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhhcyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHA+
Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0cm9uZz4KLSAg
PGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwvc3VwPgotICA8
dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWSZhbHBoYTsi
PjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxw
PgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0gIDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0g
IDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxpc3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0g
IDx2YXI+bWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xODIxIE5vcmRpYy4gUm9h
ZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgotIDwvcD4KLTwvYm9keT48L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZh
bHVlMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNf
YXR0cnNldHZhbHVlMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU5OWY2NGU5ZmI5ZmIxYWE0ZGIxZWQwNTA5MDE4YjRhYjk4ODRhMGYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAg
LTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUv
bGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMgotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19hdHRyc2V0dmFsdWUyLmpzIGIv
TGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTIuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyOWQ3ZDViMWM5OGQ3M2NiMmQ2ZGQ0MzUwYmRj
ZWVjNjViM2QwMTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTIuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAw
MS0yMDA0IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0
dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5m
b3JtYXRpY3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMg
UmVzZXJ2ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0
d2FyZSBMaWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAKLQotWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmln
aHQtc29mdHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0
aGF0IGlkZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBv
ZiB0ZXN0Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAi
aHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19hdHRy
c2V0dmFsdWUyIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWls
ZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRl
c3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgot
Ly8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNo
cm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNl
LCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0
aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJv
ZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdl
U3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVz
IHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAg
ICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRl
ZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVv
Zih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7
Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhj
X3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAg
ICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNo
KGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAg
ICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8v
ICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBl
YWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hl
biBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAg
ICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBi
b2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkg
ewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMg
PSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1TZXRzIEF0dHIudmFsdWUgb24g
YW4gYXR0cmlidXRlIHRoYXQgc2hvdWxkIGNvbnRhaW4gbXVsdGlwbGUgY2hpbGQgbm9kZXMuCi0K
LSogQGF1dGhvciBDdXJ0IEFybm9sZAotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgv
UkVDLURPTS1MZXZlbC0xLTE5OTgxMDAxL2xldmVsLW9uZS1jb3JlI0lELTIyMTY2MjQ3NAotKi8K
LWZ1bmN0aW9uIGhjX2F0dHJzZXR2YWx1ZTIoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihj
aGVja0luaXRpYWxpemF0aW9uKGJ1aWxkZXIsICJoY19hdHRyc2V0dmFsdWUyIikgIT0gbnVsbCkg
cmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAgICB2YXIgYWNyb255bUxpc3Q7Ci0gICAgICB2YXIg
dGVzdE5vZGU7Ci0gICAgICB2YXIgYXR0cmlidXRlczsKLSAgICAgIHZhciB0aXRsZUF0dHI7Ci0g
ICAgICB2YXIgdmFsdWU7Ci0gICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICB2YXIgcmV0dmFsOwot
ICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIgb3RoZXJDaGlsZDsKLSAgICAgIAotICAg
ICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5k
ZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRv
YyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBhY3JvbnltTGlzdCA9
IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgdGVzdE5vZGUgPSBh
Y3JvbnltTGlzdC5pdGVtKDMpOwotICAgICAgYXR0cmlidXRlcyA9IHRlc3ROb2RlLmF0dHJpYnV0
ZXM7Ci0KLSAgICAgIHRpdGxlQXR0ciA9IGF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJ0aXRsZSIp
OwotICAgICAgdGV4dE5vZGUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoInRlcmRheSIpOwotICAgICAg
cmV0dmFsID0gdGl0bGVBdHRyLmFwcGVuZENoaWxkKHRleHROb2RlKTsKLSAgICAgIGZpcnN0Q2hp
bGQgPSB0aXRsZUF0dHIuZmlyc3RDaGlsZDsKLQotICAgICAgYXNzZXJ0Tm90TnVsbCgiYXR0ckNo
aWxkTm90TnVsbCIsZmlyc3RDaGlsZCk7Ci10aXRsZUF0dHIudmFsdWUgPSAiVG9tb3Jyb3ciOwot
Ci0gICAgICBmaXJzdENoaWxkLm5vZGVWYWx1ZSA9ICJpbXBsIHJldXNlZCBub2RlIjsKLQotICAg
ICAgdmFsdWUgPSB0aXRsZUF0dHIudmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0clZh
bHVlIiwiVG9tb3Jyb3ciLHZhbHVlKTsKLSAgICAgICB2YWx1ZSA9IHRpdGxlQXR0ci5ub2RlVmFs
dWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiYXR0ck5vZGVWYWx1ZSIsIlRvbW9ycm93Iix2YWx1
ZSk7Ci0gICAgICAgZmlyc3RDaGlsZCA9IHRpdGxlQXR0ci5sYXN0Q2hpbGQ7Ci0KLSAgICAgIHZh
bHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygiZmlyc3RD
aGlsZFZhbHVlIiwiVG9tb3Jyb3ciLHZhbHVlKTsKLSAgICAgICBvdGhlckNoaWxkID0gZmlyc3RD
aGlsZC5uZXh0U2libGluZzsKLQotICAgICAgYXNzZXJ0TnVsbCgibmV4dFNpYmxpbmdJc051bGwi
LG90aGVyQ2hpbGQpOwotICAgIAotfQotCi0KLQotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAg
aGNfYXR0cnNldHZhbHVlMigpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2F0dHJzZXR2YWx1ZTIueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMi54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmFkZmNjZGNmY2Y4YzExZDExNTFlNTJlYWM3OWFmNTk0YzhmOWI1Yy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9k
b20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cnNldHZhbHVlMi54aHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDYwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURB
VEE/PgotPCFET0NUWVBFIGh0bWwKLSAgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0
cmljdC8vRU4iCi0gICAieGh0bWwxLXN0cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICIm
Izk0NTsiPgotICAgPCFFTlRJVFkgYmV0YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICIm
Izk0NzsiPgotICAgPCFFTlRJVFkgZGVsdGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9u
ICImIzk0OTsiPgotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5v
dGF0aW9uMSBQVUJMSUMgIm5vdGF0aW9uMUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIg
U1lTVEVNICJub3RhdGlvbjJGaWxlIj4KLSAgIDwhQVRUTElTVCBhY3JvbnltIGRpciBDREFUQSAi
bHRyIj4KLV0+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5o
Y19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnho
dG1sLmpzIi8+PHNjcmlwdCAgY2hhcnNldD0iVVRGLTgiIHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJoY19hdHRyc2V0dmFsdWUyLmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQn
PmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+
PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4K
LSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwv
Y29kZT4gICAgICAgICAgIAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5
ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9u
Zz5NYXJ0aGEgUmF5bm9sZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJl
bmNlIG51bWJlciAyICZhbXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9u
IHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNl
Y3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4K
LSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1h
OwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8
c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2Vy
PC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxh
Y3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1
NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+
SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4K
LSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4
NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25n
PlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2Rl
PgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4K
LSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1s
L2xldmVsMS9jb3JlL2hjX2VsZW1lbnRub3JtYWxpemUyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19lbGVtZW50bm9ybWFsaXplMi1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMmY5OWQ2MTBjYmZhZmQ5ZDQ5YWMw
YjIyMjFhNjlhN2Q0ZTVhMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRub3Jt
YWxpemUyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlo
dHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2VsZW1l
bnRub3JtYWxpemUyCi1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9t
L3hodG1sL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRub3JtYWxpemUyLmpzIGIvTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRub3JtYWxpemUyLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiMjE5N2VkNWExZDgxMGRkYWY4MzI4NzlkNDEzNDMwZjU3MjE0
NDhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2RvbS94aHRtbC9sZXZlbDEvY29yZS9oY19lbGVtZW50bm9ybWFsaXplMi5qcworKysg
L2Rldi9udWxsCkBAIC0xLDEyOSArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIw
MDQgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUg
b2YgVGVjaG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1h
dGljcyBhbmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNl
cnZlZC4gVGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJl
IExpY2Vuc2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBv
ZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAot
Ci1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1z
b2Z0d2FyZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQg
aWRlbnRpZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRl
c3QKLSAgICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRw
Oi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2VsZW1lbnRu
b3JtYWxpemUyIjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWls
ZGVyID0gbnVsbDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRl
c3RpbmcgZnJhbWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgot
Ly8KLS8vICAgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNo
cm9ub3VzCi0vLyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNl
LCB0aGUgc3RhdHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0
aW9uIGlzIGltbWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJv
ZHkgb2YgdGhlIHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdl
U3RhdHVzID0gJ3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVz
IHRlc3QgZG9jdW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAg
ICBidWlsZGVyID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRl
ZCA9IDA7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVv
Zih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7
Ci0gICAgICB9Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhj
X3N0YWZmIik7Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAg
ICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNo
KGV4KSB7Ci0gICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAg
ICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8v
ICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBl
YWNoIGFzeWNocm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hl
biBldmVyeSBzeW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAg
ICAgdGhlIHBhZ2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBi
b2R5IG9mIHRoZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkg
ewotICAgIGlmICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMg
PSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi1BZGQgYW4gZW1wdHkgdGV4dCBu
b2RlIHRvIGFuIGV4aXN0aW5nIGF0dHJpYnV0ZSBub2RlLCBub3JtYWxpemUgdGhlIGNvbnRhaW5p
bmcgZWxlbWVudAotYW5kIGNoZWNrIHRoYXQgdGhlIGF0dHJpYnV0ZSBub2RlIGhhcyBlbGltaW5h
dGVkIHRoZSBlbXB0eSB0ZXh0LgotCi0qIEBhdXRob3IgQ3VydCBBcm5vbGQKLSogQHNlZSBodHRw
Oi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy1ET00tTGV2ZWwtMS0xOTk4MTAwMS9sZXZlbC1vbmUt
Y29yZSNJRC0xNjJDRjA4MwotKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3No
b3dfYnVnLmNnaT9pZD00ODIKLSovCi1mdW5jdGlvbiBoY19lbGVtZW50bm9ybWFsaXplMigpIHsK
LSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVpbGRlciwgImhj
X2VsZW1lbnRub3JtYWxpemUyIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7Ci0gICAg
ICB2YXIgcm9vdDsKLSAgICAgIHZhciBlbGVtZW50TGlzdDsKLSAgICAgIHZhciBlbGVtZW50Owot
ICAgICAgdmFyIGZpcnN0Q2hpbGQ7Ci0gICAgICB2YXIgc2Vjb25kQ2hpbGQ7Ci0gICAgICB2YXIg
Y2hpbGRWYWx1ZTsKLSAgICAgIHZhciBlbXB0eVRleHQ7Ci0gICAgICB2YXIgYXR0ck5vZGU7Ci0g
ICAgICB2YXIgcmV0dmFsOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAg
IGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9
IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNf
c3RhZmYiKTsKLSAgICAgIHJvb3QgPSBkb2MuZG9jdW1lbnRFbGVtZW50OwotCi0gICAgICBlbXB0
eVRleHQgPSBkb2MuY3JlYXRlVGV4dE5vZGUoIiIpOwotICAgICAgZWxlbWVudExpc3QgPSByb290
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhY3JvbnltIik7Ci0gICAgICBlbGVtZW50ID0gZWxlbWVu
dExpc3QuaXRlbSgwKTsKLSAgICAgIGF0dHJOb2RlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2Rl
KCJ0aXRsZSIpOwotICAgICAgcmV0dmFsID0gYXR0ck5vZGUuYXBwZW5kQ2hpbGQoZW1wdHlUZXh0
KTsKLSAgICAgIGVsZW1lbnQubm9ybWFsaXplKCk7Ci0gICAgICBhdHRyTm9kZSA9IGVsZW1lbnQu
Z2V0QXR0cmlidXRlTm9kZSgidGl0bGUiKTsKLSAgICAgIGZpcnN0Q2hpbGQgPSBhdHRyTm9kZS5m
aXJzdENoaWxkOwotCi0gICAgICBjaGlsZFZhbHVlID0gZmlyc3RDaGlsZC5ub2RlVmFsdWU7Ci0K
LSAgICAgIGFzc2VydEVxdWFscygiZmlyc3RDaGlsZCIsIlllcyIsY2hpbGRWYWx1ZSk7Ci0gICAg
ICAgc2Vjb25kQ2hpbGQgPSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOwotCi0gICAgICBhc3NlcnRO
dWxsKCJzZWNvbmRDaGlsZE51bGwiLHNlY29uZENoaWxkKTsKLSAgICAKLX0KLQotCi0KLQotZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKLSAgIGhjX2VsZW1lbnRub3JtYWxpemUyKCk7Ci19CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfZWxlbWVudG5vcm1hbGl6
ZTIueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwxL2NvcmUvaGNfZWxlbWVudG5v
cm1hbGl6ZTIueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMmRkNTYwMjcw
N2MwZTJjZGU4YTI0NDZlNGJhMjhmN2U2NTA3MjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMS9jb3JlL2hj
X2VsZW1lbnRub3JtYWxpemUyLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAot
PD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRt
bAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRt
bDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElU
WSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElU
WSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVO
VElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90
YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZp
bGUiPgotICAgPCFBVFRMSVNUIGFjcm9ueW0gZGlyIENEQVRBICJsdHIiPgotXT4KLTwhLS0gVGhp
cyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0ICBj
aGFyc2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImhjX2VsZW1lbnRub3Jt
YWxpemUyLmpzIi8+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRD
b21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJs
b2FkQ29tcGxldGUoKSI+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAxPC9lbT4KLSAgPHN0cm9uZz5NYXJn
YXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwvY29kZT4gICAgICAgICAg
IAotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4K
LSA8L3A+Ci0gPHA+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9s
ZHNUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGggRW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZh
bXA7ZW50MjsKLVRoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9uIHdpdGggYSByZWZlcmVu
Y2UgdG8gYSB0YWIgJmFtcDt0YWI7PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4K
LSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3Jv
bnltPgotIDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0g
Sm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVwYXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3Vw
PjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZGVsdGE7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZ
ZXMiIGNsYXNzPSJObyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9z
dHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8
L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
IlkmYWxwaGE7Ij4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3JvbnltPgot
IDwvcD4KLSA8cD4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwv
c3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAw
MDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyI+MTgyMSBO
b3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2Rv
Y3VtZW50YWRvcHRub2RlMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2RlMDEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5NGI0MDBkMTY4MTVlZjEzZDc5OThjNzFkZmQwMmUyNmE0YjQ0MGZk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudGFkb3B0bm9kZTAxLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8vd3d3LnczLm9yZy8y
MDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2RlMDEKLVN0YXR1
cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUv
ZG9jdW1lbnRhZG9wdG5vZGUwMS5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29y
ZS9kb2N1bWVudGFkb3B0bm9kZTAxLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
MWYxYjc2NGIyNGVlZjQ1MzA5YWVjOGViYjRiNDQ3ZjAwZWY4NWYwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDMvY29yZS9kb2N1bWVudGFkb3B0bm9kZTAxLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICsw
LDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25z
b3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVh
biBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywg
S2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAot
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9y
Zy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwot
Ci0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0Lgot
ICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBn
ZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9N
LVRlc3QtU3VpdGUvbGV2ZWwzL2NvcmUvZG9jdW1lbnRhZG9wdG5vZGUwMSI7Ci0gICB9Ci0KLXZh
ciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAg
IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUK
LS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBu
byBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3Vt
ZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAg
IGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8g
ICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1
bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAg
IHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIs
IG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZp
Z3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2
YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmlu
ZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xv
YWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAg
ICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0g
J2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRp
YWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAn
Y29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxl
ZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0
YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9h
ZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBj
aGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBl
eGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVk
ID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19
Ci0KLQotLyoqCi0qIAotCUFkb3B0IHRoZSBjbGFzcyBhdHRyaWJ1dGUgbm9kZSBvZiB0aGUgZm91
cnRoIGFjcm9ueW0gZWxlbWVudC4gIENoZWNrIGlmIHRoaXMgYXR0cmlidXRlIGhhcyBiZWVuIGFk
b3B0ZWQgc3VjY2Vzc2Z1bGx5IGJ5IHZlcmlmeWluZyB0aGUKLQlub2RlTmFtZSwgbm9kZVR5cGUs
IG5vZGVWYWx1ZSwgc3BlY2lmaWVkIGFuZCBvd25lckVsZW1lbnQgYXR0cmlidXRlcyBvZiB0aGUg
YWRvcHRlZCBub2RlLgotCi0qIEBhdXRob3IgSUJNCi0qIEBhdXRob3IgTmVpbCBEZWxpbWEKLSog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy1ET00tTGV2ZWwtMy1Db3JlLTIwMDQw
NDA3L2NvcmUjRG9jdW1lbnQzLWFkb3B0Tm9kZQotKi8KLWZ1bmN0aW9uIGRvY3VtZW50YWRvcHRu
b2RlMDEoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1
aWxkZXIsICJkb2N1bWVudGFkb3B0bm9kZTAxIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBk
b2M7Ci0gICAgICB2YXIgYXR0ck93bmVyRWxlbTsKLSAgICAgIHZhciBlbGVtZW50OwotICAgICAg
dmFyIGF0dHI7Ci0gICAgICB2YXIgY2hpbGRMaXN0OwotICAgICAgdmFyIGFkb3B0ZWRjbGFzczsK
LSAgICAgIHZhciBhdHRyc1BhcmVudDsKLSAgICAgIHZhciBub2RlTmFtZTsKLSAgICAgIHZhciBu
b2RlVHlwZTsKLSAgICAgIHZhciBub2RlVmFsdWU7Ci0gICAgICB2YXIgZmlyc3RDaGlsZDsKLSAg
ICAgIHZhciBmaXJzdENoaWxkVmFsdWU7Ci0gICAgICB2YXIgc2Vjb25kQ2hpbGQ7Ci0gICAgICB2
YXIgc2Vjb25kQ2hpbGRUeXBlOwotICAgICAgdmFyIHNlY29uZENoaWxkTmFtZTsKLSAgICAgIAot
ICAgICAgdmFyIGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAn
dW5kZWZpbmVkJykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAg
IGRvYyA9IGxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBjaGlsZExpc3Qg
PSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFjcm9ueW0iKTsKLSAgICAgIGVsZW1lbnQgPSBj
aGlsZExpc3QuaXRlbSgzKTsKLSAgICAgIGF0dHIgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUo
ImNsYXNzIik7Ci0gICAgICBhZG9wdGVkY2xhc3MgPSBkb2MuYWRvcHROb2RlKGF0dHIpOwotICAg
ICAgCi0JaWYoCi0JCi0JKGFkb3B0ZWRjbGFzcyAhPSBudWxsKQotCi0JKSB7Ci0Jbm9kZU5hbWUg
PSBhZG9wdGVkY2xhc3Mubm9kZU5hbWU7Ci0KLSAgICAgIG5vZGVWYWx1ZSA9IGFkb3B0ZWRjbGFz
cy5ub2RlVmFsdWU7Ci0KLSAgICAgIG5vZGVUeXBlID0gYWRvcHRlZGNsYXNzLm5vZGVUeXBlOwot
Ci0gICAgICBhdHRyT3duZXJFbGVtID0gYWRvcHRlZGNsYXNzLm93bmVyRWxlbWVudDsKLQotICAg
ICAgYXNzZXJ0RXF1YWxzKCJkb2N1bWVudGFkb3B0b2RlMDFfbm9kZU5hbWUiLCJjbGFzcyIsbm9k
ZU5hbWUpOwotICAgICAgIGFzc2VydEVxdWFscygiZG9jdW1lbnRhZG9wdE5vZGUwMV9ub2RlVHlw
ZSIsMixub2RlVHlwZSk7Ci0gICAgICAgYXNzZXJ0TnVsbCgiZG9jdW1lbnRhZG9wdG5vZGUwMV9v
d25lckRvYyIsYXR0ck93bmVyRWxlbSk7Ci0gICAgZmlyc3RDaGlsZCA9IGFkb3B0ZWRjbGFzcy5m
aXJzdENoaWxkOwotCi0gICAgICBhc3NlcnROb3ROdWxsKCJmaXJzdENoaWxkTm90TnVsbCIsZmly
c3RDaGlsZCk7Ci1maXJzdENoaWxkVmFsdWUgPSBmaXJzdENoaWxkLm5vZGVWYWx1ZTsKLQotICAg
ICAgCi0JaWYoCi0JKCJZIiA9PSBmaXJzdENoaWxkVmFsdWUpCi0JKSB7Ci0Jc2Vjb25kQ2hpbGQg
PSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOwotCi0gICAgICBhc3NlcnROb3ROdWxsKCJzZWNvbmRD
aGlsZE5vdE51bGwiLHNlY29uZENoaWxkKTsKLXNlY29uZENoaWxkVHlwZSA9IHNlY29uZENoaWxk
Lm5vZGVUeXBlOwotCi0gICAgICBhc3NlcnRFcXVhbHMoInNlY29uZENoaWxkSXNFbnRpdHlSZWZl
cmVuY2UiLDUsc2Vjb25kQ2hpbGRUeXBlKTsKLSAgICAgICBzZWNvbmRDaGlsZE5hbWUgPSBzZWNv
bmRDaGlsZC5ub2RlTmFtZTsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJzZWNvbmRDaGlsZElzRW50
MVJlZmVyZW5jZSIsImFscGhhIixzZWNvbmRDaGlsZE5hbWUpOwotICAgICAgIAotCX0KLQkKLQkJ
ZWxzZSB7Ci0JCQlhc3NlcnRFcXVhbHMoImRvY3VtZW50YWRvcHRub2RlMDFfbm9kZVZhbHVlIiwi
Wc6xIixub2RlVmFsdWUpOwotICAgICAgIAotCQl9Ci0JCi0JfQotCQotfQotCi0KLQotCi1mdW5j
dGlvbiBydW5UZXN0KCkgewotICAgZG9jdW1lbnRhZG9wdG5vZGUwMSgpOwotfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2RlMDEu
eGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRhZG9wdG5v
ZGUwMS54aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUzOGJkYTdkN2U5NTY3
N2IwM2IyOWUyNzUxM2YyNTkwZDBhZjI3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1l
bnRhZG9wdG5vZGUwMS54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLTw/eG1s
IHZlcnNpb249IjEuMCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/PgotPCFET0NUWVBFIGh0bWwKLSAg
IFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCi0gICAieGh0bWwxLXN0
cmljdC5kdGQiIFsKLSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsiPgotICAgPCFFTlRJVFkgYmV0
YSAiJiM5NDY7Ij4KLSAgIDwhRU5USVRZIGdhbW1hICImIzk0NzsiPgotICAgPCFFTlRJVFkgZGVs
dGEgIiYjOTQ4OyI+Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0OTsiPgotICAgPCFFTlRJVFkg
YWxwaGEgIiYjOTUwOyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQVUJMSUMgIm5vdGF0aW9u
MUZpbGUiPgotICAgPCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVNICJub3RhdGlvbjJGaWxlIj4K
LSAgIDwhQVRUTElTVCBwCi0gICAgICAgIGRpciBDREFUQSAncnRsJwotICAgICAgICB4bWxuczpk
bXN0YyBDREFUQSAjSU1QTElFRAotICAgICAgICB4bWxuczpubSBDREFUQSAjSU1QTElFRAotICAg
ICAgICB4bWxuczplbXAyIENEQVRBICNJTVBMSUVEPgotICAgPCFBVFRMSVNUIGh0bWwKLSAgICAg
ICAgICAgICAgICAgICB4bWxuczp4c2kgQ0RBVEEgI0lNUExJRUQKLSAgICAgICAgICAgICAgICAg
ICB4c2k6c2NoZW1hTG9jYXRpb24gQ0RBVEEgI0lNUExJRUQ+Ci0gICA8IUFUVExJU1QgYWNyb255
bSB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbiBDREFUQSAjSU1QTElFRD4KLSAgIDwhRU5U
SVRZIGVudDQgIjxzcGFuIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz5FbGVt
ZW50IGRhdGE8L3NwYW4+PD9QSXRhcmdldCBQSWRhdGE/PiI+Ci0gICA8IUFUVExJU1Qgc3BhbiB4
bWxucyBDREFUQSAjSU1QTElFRD4KLV0+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4t
LT4KLTxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJwotICAgICAgICB4
bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICAg
ICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwgaGNf
c3RhZmYueHNkIj48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+PHNjcmlwdCBjaGFy
c2V0PSJVVEYtOCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImRvY3VtZW50YWRvcHRub2Rl
MDEuanMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBs
ZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRD
b21wbGV0ZSgpIj4KLSA8cCB4bWxuczpkbXN0Yz0iaHR0cDovL3d3dy51c2EuY29tIj4KLSAgPGVt
PkVNUDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29k
ZT5BY2NvdW50YW50PC9jb2RlPgotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwv
dmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlv
bj0iWWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8
L3A+Ci0gPHAgeG1sbnM6ZG1zdGM9Imh0dHA6Ly93d3cudXNhLmNvbSI+Ci0gIDxlbT5FTVAwMDAy
PC9lbT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHMKLTwhW0NEQVRBW1RoaXMgaXMgYSBDREFU
QVNlY3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmVudDI7XV0+Ci08IVtDREFU
QVtUaGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEg
dGFiICZ0YWI7XV0+PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4z
NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIg
Y2xhc3M9IlllcyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+JmJldGE7IERh
bGxhcywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cCB4bWxuczpkbXN0Yz0i
aHR0cDovL3d3dy5uZXR6ZXJvLmNvbSI+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5S
b2dlcgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4K
LSAgPHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmVudDQ7PC92YXI+Ci0gIDxhY3JvbnltIHRp
dGxlPSJZZXMiIGNsYXNzPSJObyIgaWQ9Il85ODU1MyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9j
YXRpb249IlllcyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9w
PgotIDxwIHhtbG5zOm5tPSJodHRwOi8vd3d3LmFsdGF2aXN0YS5jb20iPgotICA8ZW0+RU1QMDAw
NDwvZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5l
bCBEaXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zh
cj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7IiBpZD0iXzk4NTU2IiB4
c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iWWVzIj4yNyBTb3V0aCBSb2FkLiBEYWxsYXMs
IFRleGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cCB4bWxuczplbXAyPSJodHRwOi8vd3d3
Lm5pc3QuZ292Ij4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwv
c3Ryb25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAw
MDwvc3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9
IlllcyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+MTgyMSBOb3JkaWMuIFJv
YWQsIElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50YWRv
cHRub2RlMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3Jl
L2RvY3VtZW50YWRvcHRub2RlMDItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzZWM2NWU0YmNlM2UwZGNmNmIxMDcwNTUxOWUzOGU3ZTlhNGE2ZjRkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94
aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudGFkb3B0bm9kZTAyLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGVzdAlodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1U
ZXN0LVN1aXRlL2xldmVsMy9jb3JlL2RvY3VtZW50YWRvcHRub2RlMDIKLVN0YXR1cwlTdWNjZXNz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRh
ZG9wdG5vZGUwMi5qcyBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVu
dGFkb3B0bm9kZTAyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzFjNjhhNzQw
MjIyMTVjM2Q3OWE4ZmQxNWNjNmE2N2RmMzNlNDI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9k
b2N1bWVudGFkb3B0bm9kZTAyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAgQEAKLQot
LyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAK
LShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVhbiBSZXNlYXJj
aCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2VpbyBVbml2
ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAotaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0
aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwotCi0KLQotICAg
LyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0LgotICAgICogIEBy
ZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBnZXRUYXJnZXRV
UkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3Vp
dGUvbGV2ZWwzL2NvcmUvZG9jdW1lbnRhZG9wdG5vZGUwMiI7Ci0gICB9Ci0KLXZhciBkb2NzTG9h
ZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVu
Y3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAg
cnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0vLyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1
cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRp
bmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhlIHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0
byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJh
aXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9mIHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNl
dFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0g
ICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJv
dyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVpbGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWls
ZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAwOwotICAgICAgCi0gICAgICB2YXIgZG9jUmVm
ID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0g
ICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBw
cmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgICAKLSAgICAgICBpZiAo
ZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRl
JzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkgewotICAgIAljYXRjaEluaXRpYWxpemF0aW9u
RXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUn
OwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUg
Y29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBhc3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4g
c2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZlcnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3Vt
ZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRoZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdo
aWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBvZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4K
LWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAgICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsK
LSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoq
Ci0qIAotCUFkb3B0IHRoZSBjbGFzcyBhdHRyaWJ1dGUgbm9kZSBvZiB0aGUgZm91cnRoIGFjcm9u
eW0gZWxlbWVudC4gIENoZWNrIGlmIHRoaXMgYXR0cmlidXRlIGhhcyBiZWVuIGFkb3B0ZWQgCi0J
c3VjY2Vzc2Z1bGx5IGJ5IHZlcmlmeWluZyB0aGUgbm9kZU5hbWUsIG5vZGVUeXBlLCBvd25lckVs
ZW1lbnQsIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGFuZCBjaGlsZCBub2RlcyAKLQlvZiB0aGUgYWRv
cHRlZCBub2RlLgotCi0qIEBhdXRob3IgSUJNCi0qIEBhdXRob3IgTmVpbCBEZWxpbWEKLSogQHNl
ZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy1ET00tTGV2ZWwtMy1Db3JlLTIwMDQwNDA3
L2NvcmUjRG9jdW1lbnQzLWFkb3B0Tm9kZQotKi8KLWZ1bmN0aW9uIGRvY3VtZW50YWRvcHRub2Rl
MDIoKSB7Ci0gICB2YXIgc3VjY2VzczsKLSAgICBpZihjaGVja0luaXRpYWxpemF0aW9uKGJ1aWxk
ZXIsICJkb2N1bWVudGFkb3B0bm9kZTAyIikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7
Ci0gICAgICB2YXIgbmV3RG9jOwotICAgICAgdmFyIGRvbUltcGw7Ci0gICAgICB2YXIgYXR0ck93
bmVyRWxlbTsKLSAgICAgIHZhciBlbGVtZW50OwotICAgICAgdmFyIGF0dHI7Ci0gICAgICB2YXIg
Y2hpbGRMaXN0OwotICAgICAgdmFyIGFkb3B0ZWRjbGFzczsKLSAgICAgIHZhciBhdHRyc1BhcmVu
dDsKLSAgICAgIHZhciBub2RlTmFtZTsKLSAgICAgIHZhciBub2RlVHlwZTsKLSAgICAgIHZhciBu
b2RlVmFsdWU7Ci0gICAgICB2YXIgaXNTcGVjaWZpZWQ7Ci0gICAgICB2YXIgbnVsbERvY1R5cGUg
PSBudWxsOwotCi0gICAgICB2YXIgZmlyc3RDaGlsZDsKLSAgICAgIHZhciBmaXJzdENoaWxkVmFs
dWU7Ci0gICAgICB2YXIgc2Vjb25kQ2hpbGQ7Ci0gICAgICB2YXIgc2Vjb25kQ2hpbGRUeXBlOwot
ICAgICAgdmFyIHNlY29uZENoaWxkTmFtZTsKLSAgICAgIHZhciBkb2NFbGVtOwotICAgICAgdmFy
IHJvb3ROUzsKLSAgICAgIHZhciByb290TmFtZTsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9
IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAg
ICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVm
LCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVu
dDsKLQotICAgICAgcm9vdE5hbWUgPSBkb2NFbGVtLnRhZ05hbWU7Ci0KLSAgICAgIHJvb3ROUyA9
IGRvY0VsZW0ubmFtZXNwYWNlVVJJOwotCi0gICAgICBkb21JbXBsID0gZG9jLmltcGxlbWVudGF0
aW9uOwotbmV3RG9jID0gZG9tSW1wbC5jcmVhdGVEb2N1bWVudChyb290TlMscm9vdE5hbWUsbnVs
bERvY1R5cGUpOwotICAgICAgY2hpbGRMaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJh
Y3JvbnltIik7Ci0gICAgICBlbGVtZW50ID0gY2hpbGRMaXN0Lml0ZW0oMyk7Ci0gICAgICBhdHRy
ID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCJjbGFzcyIpOwotICAgICAgYWRvcHRlZGNsYXNz
ID0gbmV3RG9jLmFkb3B0Tm9kZShhdHRyKTsKLSAgICAgIAotCWlmKAotCQotCShhZG9wdGVkY2xh
c3MgIT0gbnVsbCkKLQotCSkgewotCW5vZGVOYW1lID0gYWRvcHRlZGNsYXNzLm5vZGVOYW1lOwot
Ci0gICAgICBub2RlVmFsdWUgPSBhZG9wdGVkY2xhc3Mubm9kZVZhbHVlOwotCi0gICAgICBub2Rl
VHlwZSA9IGFkb3B0ZWRjbGFzcy5ub2RlVHlwZTsKLQotICAgICAgYXR0ck93bmVyRWxlbSA9IGFk
b3B0ZWRjbGFzcy5vd25lckVsZW1lbnQ7Ci0KLSAgICAgIGlzU3BlY2lmaWVkID0gYWRvcHRlZGNs
YXNzLnNwZWNpZmllZDsKLQotICAgICAgYXNzZXJ0RXF1YWxzKCJkb2N1bWVudGFkb3B0bm9kZTAy
X25vZGVOYW1lIiwiY2xhc3MiLG5vZGVOYW1lKTsKLSAgICAgICBhc3NlcnRFcXVhbHMoImRvY3Vt
ZW50YWRvcHRub2RlMDJfbm9kZVR5cGUiLDIsbm9kZVR5cGUpOwotICAgICAgIGFzc2VydE51bGwo
ImRvY3VtZW50YWRvcHRub2RlMDJfb3duZXJEb2MiLGF0dHJPd25lckVsZW0pOwotICAgIGFzc2Vy
dFRydWUoImRvY3VtZW50YWRvcHRub2RlMDJfc3BlY2lmaWVkIixpc1NwZWNpZmllZCk7Ci1maXJz
dENoaWxkID0gYWRvcHRlZGNsYXNzLmZpcnN0Q2hpbGQ7Ci0KLSAgICAgIGFzc2VydE5vdE51bGwo
ImZpcnN0Q2hpbGROb3ROdWxsIixmaXJzdENoaWxkKTsKLWZpcnN0Q2hpbGRWYWx1ZSA9IGZpcnN0
Q2hpbGQubm9kZVZhbHVlOwotCi0gICAgICAKLQlpZigKLQkoIlkiID09IGZpcnN0Q2hpbGRWYWx1
ZSkKLQkpIHsKLQlzZWNvbmRDaGlsZCA9IGZpcnN0Q2hpbGQubmV4dFNpYmxpbmc7Ci0KLSAgICAg
IGFzc2VydE5vdE51bGwoInNlY29uZENoaWxkTm90TnVsbCIsc2Vjb25kQ2hpbGQpOwotc2Vjb25k
Q2hpbGRUeXBlID0gc2Vjb25kQ2hpbGQubm9kZVR5cGU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygi
c2Vjb25kQ2hpbGRJc0VudGl0eVJlZmVyZW5jZSIsNSxzZWNvbmRDaGlsZFR5cGUpOwotICAgICAg
IHNlY29uZENoaWxkTmFtZSA9IHNlY29uZENoaWxkLm5vZGVOYW1lOwotCi0gICAgICBhc3NlcnRF
cXVhbHMoInNlY29uZENoaWxkSXNFbnQxUmVmZXJlbmNlIiwiYWxwaGEiLHNlY29uZENoaWxkTmFt
ZSk7Ci0gICAgICAgCi0JfQotCQotCQllbHNlIHsKLQkJCWFzc2VydEVxdWFscygiZG9jdW1lbnRh
ZG9wdG5vZGUwMl9ub2RlVmFsdWUiLCJZzrEiLG5vZGVWYWx1ZSk7Ci0gICAgICAgCi0JCX0KLQkK
LQl9Ci0JCi19Ci0KLQotCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICBkb2N1bWVudGFkb3B0
bm9kZTAyKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2Nv
cmUvZG9jdW1lbnRhZG9wdG5vZGUwMi54aHRtbCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZl
bDMvY29yZS9kb2N1bWVudGFkb3B0bm9kZTAyLnhodG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0MzdhYWQzOTlkMDQ2NTdmNjcwNGRjOGNlZmUyMzVlYTdmYjc2ZWEwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94
aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudGFkb3B0bm9kZTAyLnhodG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNzMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFU
QT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3Ry
aWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYj
OTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYj
OTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24g
IiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90
YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBT
WVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIHAKLSAgICAgICAgZGlyIENEQVRB
ICdydGwnCi0gICAgICAgIHhtbG5zOmRtc3RjIENEQVRBICNJTVBMSUVECi0gICAgICAgIHhtbG5z
Om5tIENEQVRBICNJTVBMSUVECi0gICAgICAgIHhtbG5zOmVtcDIgQ0RBVEEgI0lNUExJRUQ+Ci0g
ICA8IUFUVExJU1QgaHRtbAotICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaSBDREFUQSAjSU1Q
TElFRAotICAgICAgICAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbiBDREFUQSAjSU1QTElF
RD4KLSAgIDwhQVRUTElTVCBhY3JvbnltIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uIENE
QVRBICNJTVBMSUVEPgotICAgPCFFTlRJVFkgZW50NCAiPHNwYW4geG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwnPkVsZW1lbnQgZGF0YTwvc3Bhbj48P1BJdGFyZ2V0IFBJZGF0YT8+
Ij4KLSAgIDwhQVRUTElTVCBzcGFuIHhtbG5zIENEQVRBICNJTVBMSUVEPgotXT4KLTwhLS0gVGhp
cyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnCi0gICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9Y
TUxTY2hlbWEtaW5zdGFuY2UiCi0gICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCBoY19zdGFmZi54c2QiPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxl
PmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxm
eGh0bWwuanMiLz48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iZG9jdW1lbnRhZG9wdG5vZGUwMi5qcyIvPjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2Ny
aXB0Jz5mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7IHN0YXJ0VGVzdCgpOyB9PC9zY3JpcHQ+PC9o
ZWFkPjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgotIDxwIHhtbG5zOmRtc3RjPSJodHRw
Oi8vd3d3LnVzYS5jb20iPgotICA8ZW0+RU1QMDAwMTwvZW0+Ci0gIDxzdHJvbmc+TWFyZ2FyZXQg
TWFydGluPC9zdHJvbmc+Ci0gIDxjb2RlPkFjY291bnRhbnQ8L2NvZGU+Ci0gIDxzdXA+NTYsMDAw
PC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIHhzaTpu
b05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJZZXMiPjEyMzAgTm9ydGggQXZlLiBEYWxsYXMsIFRl
eGFzIDk4NTUxPC9hY3JvbnltPgotIDwvcD4KLSA8cCB4bWxuczpkbXN0Yz0iaHR0cDovL3d3dy51
c2EuY29tIj4KLSAgPGVtPkVNUDAwMDI8L2VtPgotICA8c3Ryb25nPk1hcnRoYSBSYXlub2xkcwot
PCFbQ0RBVEFbVGhpcyBpcyBhIENEQVRBU2VjdGlvbiB3aXRoIEVudGl0eVJlZmVyZW5jZSBudW1i
ZXIgMiAmZW50MjtdXT4KLTwhW0NEQVRBW1RoaXMgaXMgYW4gYWRqYWNlbnQgQ0RBVEFTZWN0aW9u
IHdpdGggYSByZWZlcmVuY2UgdG8gYSB0YWIgJnRhYjtdXT48L3N0cm9uZz4KLSAgPGNvZGU+U2Vj
cmV0YXJ5PC9jb2RlPgotICA8c3VwPjM1LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgot
ICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFM
b2NhdGlvbj0iWWVzIj4mYmV0YTsgRGFsbGFzLCAmZ2FtbWE7Ci0gOTg1NTQ8L2Fjcm9ueW0+Ci0g
PC9wPgotIDxwIHhtbG5zOmRtc3RjPSJodHRwOi8vd3d3Lm5ldHplcm8uY29tIj4KLSAgPGVtPkVN
UDAwMDM8L2VtPgotICA8c3Ryb25nPlJvZ2VyCi0gSm9uZXM8L3N0cm9uZz4KLSAgPGNvZGU+RGVw
YXJ0bWVudCBNYW5hZ2VyPC9jb2RlPgotICA8c3VwPjEwMCwwMDA8L3N1cD4KLSAgPHZhcj4mZW50
NDs8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Ik5vIiBpZD0iXzk4NTUzIiB4
c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iWWVzIj5QTyBCb3ggMjcgSXJ2aW5nLCB0ZXhh
cyA5ODU1MzwvYWNyb255bT4KLSA8L3A+Ci0gPHAgeG1sbnM6bm09Imh0dHA6Ly93d3cuYWx0YXZp
c3RhLmNvbSI+Ci0gIDxlbT5FTVAwMDA0PC9lbT4KLSAgPHN0cm9uZz5KZW55IE9jb25ub3I8L3N0
cm9uZz4KLSAgPGNvZGU+UGVyc29ubmVsIERpcmVjdG9yPC9jb2RlPgotICA8c3VwPjk1LDAwMDwv
c3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFzcz0i
WSZhbHBoYTsiIGlkPSJfOTg1NTYiIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJZZXMi
PjI3IFNvdXRoIFJvYWQuIERhbGxhcywgVGV4YXMgOTg1NTY8L2Fjcm9ueW0+Ci0gPC9wPgotIDxw
IHhtbG5zOmVtcDI9Imh0dHA6Ly93d3cubmlzdC5nb3YiPgotICA8ZW0+RU1QMDAwNTwvZW0+Ci0g
IDxzdHJvbmc+Um9iZXJ0IE15ZXJzPC9zdHJvbmc+Ci0gIDxjb2RlPkNvbXB1dGVyIFNwZWNpYWxp
c3Q8L2NvZGU+Ci0gIDxzdXA+OTAsMDAwPC9zdXA+Ci0gIDx2YXI+bWFsZTwvdmFyPgotICA8YWNy
b255bSB0aXRsZT0iWWVzIiBjbGFzcz0iWWVzIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlv
bj0iWWVzIj4xODIxIE5vcmRpYy4gUm9hZCwgSXJ2aW5nIFRleGFzIDk4NTU4PC9hY3JvbnltPgot
IDwvcD4KLTwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwv
bGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMjgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDI4LWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFiMWYyMzk1OWZhODY3NjRmMWU4NWJhNWE3ZjJk
ZDVmMWE4MzY0Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMjgtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UZXN0CWh0dHA6Ly93d3cu
dzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMjgK
LVN0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwz
L2NvcmUvbm9kZXJlbW92ZWNoaWxkMjguanMgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwz
L2NvcmUvbm9kZXJlbW92ZWNoaWxkMjguanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBjYzg3Y2Y3M2FmMDljOTNiMzFmNDkxMjk5ZTlmMGQ2NTY3MDExOTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xl
dmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDI4LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICsw
LDAgQEAKLQotLyoKLUNvcHlyaWdodCDDgsKpIDIwMDEtMjAwNCBXb3JsZCBXaWRlIFdlYiBDb25z
b3J0aXVtLCAKLShNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBFdXJvcGVh
biBSZXNlYXJjaCBDb25zb3J0aXVtIAotZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywg
S2VpbyBVbml2ZXJzaXR5KS4gQWxsIAotUmlnaHRzIFJlc2VydmVkLiBUaGlzIHdvcmsgaXMgZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIFczQ8OCwq4gU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIAot
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiAKLXRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gCi0KLVsxXSBodHRwOi8vd3d3LnczLm9y
Zy9Db25zb3J0aXVtL0xlZ2FsLzIwMDIvY29weXJpZ2h0LXNvZnR3YXJlLTIwMDIxMjMxCi0qLwot
Ci0KLQotICAgLyoqCi0gICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0Lgot
ICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAotICAgICovCi1mdW5jdGlvbiBn
ZXRUYXJnZXRVUkkoKSB7Ci0gICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9N
LVRlc3QtU3VpdGUvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMjgiOwotICAgfQotCi12YXIg
ZG9jc0xvYWRlZCA9IC0xMDAwMDAwOwotdmFyIGJ1aWxkZXIgPSBudWxsOwotCi0vLwotLy8gICBU
aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgYmVmb3JlCi0v
LyAgICAgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCi0vLwotLy8gICBJZiB0aGVyZSBhcmUgbm8g
Y29uZmlndXJhdGlvbiBleGNlcHRpb25zLCBhc3luY2hyb25vdXMKLS8vICAgICAgICBkb2N1bWVu
dCBsb2FkaW5nIGlzIHN0YXJ0ZWQuICBPdGhlcndpc2UsIHRoZSBzdGF0dXMKLS8vICAgICAgICBp
cyBzZXQgdG8gY29tcGxldGUgYW5kIHRoZSBleGNlcHRpb24gaXMgaW1tZWRpYXRlbHkKLS8vICAg
ICAgICByYWlzZWQgd2hlbiBlbnRlcmluZyB0aGUgYm9keSBvZiB0aGUgdGVzdC4KLS8vCi1mdW5j
dGlvbiBzZXRVcFBhZ2UoKSB7Ci0gICBzZXRVcFBhZ2VTdGF0dXMgPSAncnVubmluZyc7Ci0gICB0
cnkgewotICAgICAvLwotICAgICAvLyAgIGNyZWF0ZXMgdGVzdCBkb2N1bWVudCBidWlsZGVyLCBt
YXkgdGhyb3cgZXhjZXB0aW9uCi0gICAgIC8vCi0gICAgIGJ1aWxkZXIgPSBjcmVhdGVDb25maWd1
cmVkQnVpbGRlcigpOwotCi0gICAgICBkb2NzTG9hZGVkID0gMDsKLSAgICAgIAotICAgICAgdmFy
IGRvY1JlZiA9IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVk
JykgewotICAgICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvY3NMb2Fk
ZWQgKz0gcHJlbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgICAgCi0gICAg
ICAgaWYgKGRvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdj
b21wbGV0ZSc7Ci0gICAgICAgfQotICAgIH0gY2F0Y2goZXgpIHsKLSAgICAJY2F0Y2hJbml0aWFs
aXphdGlvbkVycm9yKGJ1aWxkZXIsIGV4KTsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2Nv
bXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotCi0vLwotLy8gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQg
b24gdGhlIGNvbXBsZXRpb24gb2YgCi0vLyAgICAgIGVhY2ggYXN5Y2hyb25vdXMgbG9hZCBzdGFy
dGVkIGluIHNldFVwVGVzdHMuCi0vLwotLy8gICBXaGVuIGV2ZXJ5IHN5bmNocm9ub3VzIGxvYWRl
ZCBkb2N1bWVudCBoYXMgY29tcGxldGVkLAotLy8gICAgICB0aGUgcGFnZSBzdGF0dXMgaXMgY2hh
bmdlZCB3aGljaCBhbGxvd3MgdGhlCi0vLyAgICAgIGJvZHkgb2YgdGhlIHRlc3QgdG8gYmUgZXhl
Y3V0ZWQuCi1mdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7Ci0gICAgaWYgKCsrZG9jc0xvYWRlZCA9
PSAxKSB7Ci0gICAgICAgIHNldFVwUGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQot
Ci0KLS8qKgotKiAKLQlVc2luZyByZW1vdmVDaGlsZCBvbiBhbiBBdHRyaWJ1dGUgbm9kZSBhdHRl
bXB0IHRvIHJlbW92ZSBpdHMgVGV4dCBjaGlsZCBub2RlIGFuZAotCWFuZCB2ZXJpZnkgdGhlIG5h
bWUgb2YgdGhlIHJldHVybmVkIG5vZGUgdGhhdCB3YXMgcmVtb3ZlZC4gIE5vdyBhdHRlbXB0IHRo
ZSByZXZlcnNlCi0JYW5kIHZlcmlmeSBpZiBhIE5PVF9GT1VORF9FUlIgaXMgdGhyb3duLgotCi0q
IEBhdXRob3IgSUJNCi0qIEBhdXRob3IgTmVpbCBEZWxpbWEKLSogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi8yMDA0L1JFQy1ET00tTGV2ZWwtMy1Db3JlLTIwMDQwNDA3L2NvcmUjSUQtMTczNDgz
NDA2NgotKi8KLWZ1bmN0aW9uIG5vZGVyZW1vdmVjaGlsZDI4KCkgewotICAgdmFyIHN1Y2Nlc3M7
Ci0gICAgaWYoY2hlY2tJbml0aWFsaXphdGlvbihidWlsZGVyLCAibm9kZXJlbW92ZWNoaWxkMjgi
KSAhPSBudWxsKSByZXR1cm47Ci0gICAgdmFyIGRvYzsKLSAgICAgIHZhciBwYXJlbnRMaXN0Owot
ICAgICAgdmFyIGF0dHJzTWFwOwotICAgICAgdmFyIHBhcmVudDsKLSAgICAgIHZhciBjaGlsZDsK
LSAgICAgIHZhciBlbGVtOwotICAgICAgdmFyIHJlbW92ZWQ7Ci0gICAgICB2YXIgcmVtb3ZlZE5h
bWU7Ci0gICAgICB2YXIgcmVtb3ZlZE5vZGU7Ci0gICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBu
dWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRvYykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAg
ICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9Ci0gICAgICBkb2MgPSBsb2FkKGRvY1JlZiwg
ImRvYyIsICJoY19zdGFmZiIpOwotICAgICAgcGFyZW50TGlzdCA9IGRvYy5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYWNyb255bSIpOwotICAgICAgZWxlbSA9IHBhcmVudExpc3QuaXRlbSgwKTsKLSAg
ICAgIGF0dHJzTWFwID0gZWxlbS5hdHRyaWJ1dGVzOwotCi0gICAgICBwYXJlbnQgPSBhdHRyc01h
cC5nZXROYW1lZEl0ZW0oInhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uIik7Ci0gICAgICBj
aGlsZCA9IHBhcmVudC5maXJzdENoaWxkOwotCi0gICAgICByZW1vdmVkID0gcGFyZW50LnJlbW92
ZUNoaWxkKGNoaWxkKTsKLSAgICAgIHJlbW92ZWROYW1lID0gcmVtb3ZlZC5ub2RlVmFsdWU7Ci0K
LSAgICAgIGFzc2VydEVxdWFscygibm9kZXJlbW92ZWNoaWxkMjgiLCJZZXMiLHJlbW92ZWROYW1l
KTsKLSAgICAgICAKLQl7Ci0JCXN1Y2Nlc3MgPSBmYWxzZTsKLQkJdHJ5IHsKLSAgICAgICAgICAg
IHJlbW92ZWROb2RlID0gY2hpbGQucmVtb3ZlQ2hpbGQocGFyZW50KTsKLSAgICAgICAgfQotCQlj
YXRjaChleCkgewotICAgICAgc3VjY2VzcyA9ICh0eXBlb2YoZXguY29kZSkgIT0gJ3VuZGVmaW5l
ZCcgJiYgZXguY29kZSA9PSA4KTsKLQkJfQotCQlhc3NlcnRUcnVlKCJOT1RfRk9VTkRfRVJSX25v
ZGVyZW1vdmVjaGlsZDI4IixzdWNjZXNzKTsKLQl9Ci0KLX0KLQotCi0KLQotZnVuY3Rpb24gcnVu
VGVzdCgpIHsKLSAgIG5vZGVyZW1vdmVjaGlsZDI4KCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMjgueGh0bWwgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMjgueGh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjMGM1ODJlNmZiOTVjNDBhNTlmOGExOWI4MWU4
OWExZDczNzNiNzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDI4Lnho
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+
PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAgUFVCTElDICItLy9XM0Mv
L0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3RyaWN0LmR0ZCIgWwotICAg
PCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRhICImIzk0NjsiPgotICAg
PCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0YSAiJiM5NDg7Ij4KLSAg
IDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBhbHBoYSAiJiM5NTA7Ij4K
LSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24xRmlsZSI+Ci0gICA8IU5P
VEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgotICAgPCFBVFRMSVNUIHAK
LSAgICAgICAgZGlyIENEQVRBICdydGwnCi0gICAgICAgIHhtbG5zOmRtc3RjIENEQVRBICNJTVBM
SUVECi0gICAgICAgIHhtbG5zOm5tIENEQVRBICNJTVBMSUVECi0gICAgICAgIHhtbG5zOmVtcDIg
Q0RBVEEgI0lNUExJRUQ+Ci0gICA8IUFUVExJU1QgaHRtbAotICAgICAgICAgICAgICAgICAgIHht
bG5zOnhzaSBDREFUQSAjSU1QTElFRAotICAgICAgICAgICAgICAgICAgIHhzaTpzY2hlbWFMb2Nh
dGlvbiBDREFUQSAjSU1QTElFRD4KLSAgIDwhQVRUTElTVCBhY3JvbnltIHhzaTpub05hbWVzcGFj
ZVNjaGVtYUxvY2F0aW9uIENEQVRBICNJTVBMSUVEPgotICAgPCFFTlRJVFkgZW50NCAiPHNwYW4g
eG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPkVsZW1lbnQgZGF0YTwvc3Bhbj48
P1BJdGFyZ2V0IFBJZGF0YT8+Ij4KLSAgIDwhQVRUTElTVCBzcGFuIHhtbG5zIENEQVRBICNJTVBM
SUVEPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0tPgotPGh0bWwgeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnCi0gICAgICAgIHhtbG5zOnhzaT0iaHR0cDov
L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gICAgICAgIHhzaTpzY2hlbWFM
b2NhdGlvbj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCBoY19zdGFmZi54c2QiPjxoZWFk
PjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0IGNoYXJzZXQ9IlVURi04IiB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibm9kZXJlbW92ZWNoaWxkMjguanMiLz48c2NyaXB0IHR5
cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3Qo
KTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KLSA8cCB4
bWxuczpkbXN0Yz0iaHR0cDovL3d3dy51c2EuY29tIj4KLSAgPGVtPkVNUDAwMDE8L2VtPgotICA8
c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5BY2NvdW50YW50PC9jb2Rl
PgotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFyPgotICA8YWNyb255bSB0
aXRsZT0iWWVzIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iWWVzIj4xMjMwIE5vcnRo
IEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+Ci0gPHAgeG1sbnM6ZG1z
dGM9Imh0dHA6Ly93d3cudXNhLmNvbSI+Ci0gIDxlbT5FTVAwMDAyPC9lbT4KLSAgPHN0cm9uZz5N
YXJ0aGEgUmF5bm9sZHMKLTwhW0NEQVRBW1RoaXMgaXMgYSBDREFUQVNlY3Rpb24gd2l0aCBFbnRp
dHlSZWZlcmVuY2UgbnVtYmVyIDIgJmVudDI7XV0+Ci08IVtDREFUQVtUaGlzIGlzIGFuIGFkamFj
ZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFiICZ0YWI7XV0+PC9zdHJv
bmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSwwMDA8L3N1cD4KLSAgPHZh
cj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyIgeHNpOm5v
TmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+JmJldGE7IERhbGxhcywgJmdhbW1hOwotIDk4
NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cCB4bWxuczpkbXN0Yz0iaHR0cDovL3d3dy5uZXR6ZXJv
LmNvbSI+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dlcgotIEpvbmVzPC9zdHJv
bmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAgPHN1cD4xMDAsMDAwPC9z
dXA+Ci0gIDx2YXI+JmVudDQ7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJO
byIgaWQ9Il85ODU1MyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+UE8gQm94
IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwIHhtbG5zOm5tPSJo
dHRwOi8vd3d3LmFsdGF2aXN0YS5jb20iPgotICA8ZW0+RU1QMDAwNDwvZW0+Ci0gIDxzdHJvbmc+
SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBEaXJlY3RvcjwvY29kZT4K
LSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0
bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7IiBpZD0iXzk4NTU2IiB4c2k6bm9OYW1lc3BhY2VTY2hl
bWFMb2NhdGlvbj0iWWVzIj4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRleGFzIDk4NTU2PC9hY3Jv
bnltPgotIDwvcD4KLSA8cCB4bWxuczplbXAyPSJodHRwOi8vd3d3Lm5pc3QuZ292Ij4KLSAgPGVt
PkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ryb25nPgotICA8Y29kZT5D
b21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwvc3VwPgotICA8dmFyPm1h
bGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlllcyIgeHNpOm5vTmFtZXNw
YWNlU2NoZW1hTG9jYXRpb249IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQsIElydmluZyBUZXhhcyA5
ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDI5LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQyOS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNzEyOTM1NjlkOTg5
YzQ0ZWQ5ZjA1NmI0ZmRmZGI1OGY0NWQ4MmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVy
ZW1vdmVjaGlsZDI5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAot
VGVzdAlodHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMy9jb3JlL25v
ZGVyZW1vdmVjaGlsZDI5Ci1TdGF0dXMJU3VjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDI5LmpzIGIvTGF5b3V0VGVzdHMv
ZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDI5LmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxM2FjOWVmOTZhNDIyNzE2OWY4ZTYyYjRhNTg5MTczZTY1NDA3MTdl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQyOS5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDEzNCArMCwwIEBACi0KLS8qCi1Db3B5cmlnaHQgw4LCqSAyMDAxLTIwMDQgV29y
bGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgCi0oTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVj
aG5vbG9neSwgRXVyb3BlYW4gUmVzZWFyY2ggQ29uc29ydGl1bSAKLWZvciBJbmZvcm1hdGljcyBh
bmQgTWF0aGVtYXRpY3MsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCAKLVJpZ2h0cyBSZXNlcnZlZC4g
VGhpcyB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBXM0PDgsKuIFNvZnR3YXJlIExpY2Vu
c2UgWzFdIGluIHRoZSAKLWhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gCi10aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIAotCi1bMV0g
aHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0d2Fy
ZS0yMDAyMTIzMQotKi8KLQotCi0KLSAgIC8qKgotICAgICogIEdldHMgVVJJIHRoYXQgaWRlbnRp
ZmllcyB0aGUgdGVzdC4KLSAgICAqICBAcmV0dXJuIHVyaSBpZGVudGlmaWVyIG9mIHRlc3QKLSAg
ICAqLwotZnVuY3Rpb24gZ2V0VGFyZ2V0VVJJKCkgewotICAgICAgcmV0dXJuICJodHRwOi8vd3d3
LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDI5
IjsKLSAgIH0KLQotdmFyIGRvY3NMb2FkZWQgPSAtMTAwMDAwMDsKLXZhciBidWlsZGVyID0gbnVs
bDsKLQotLy8KLS8vICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRlc3RpbmcgZnJh
bWV3b3JrIGJlZm9yZQotLy8gICAgICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlLgotLy8KLS8vICAg
SWYgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gZXhjZXB0aW9ucywgYXN5bmNocm9ub3VzCi0v
LyAgICAgICAgZG9jdW1lbnQgbG9hZGluZyBpcyBzdGFydGVkLiAgT3RoZXJ3aXNlLCB0aGUgc3Rh
dHVzCi0vLyAgICAgICAgaXMgc2V0IHRvIGNvbXBsZXRlIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGlt
bWVkaWF0ZWx5Ci0vLyAgICAgICAgcmFpc2VkIHdoZW4gZW50ZXJpbmcgdGhlIGJvZHkgb2YgdGhl
IHRlc3QuCi0vLwotZnVuY3Rpb24gc2V0VXBQYWdlKCkgewotICAgc2V0VXBQYWdlU3RhdHVzID0g
J3J1bm5pbmcnOwotICAgdHJ5IHsKLSAgICAgLy8KLSAgICAgLy8gICBjcmVhdGVzIHRlc3QgZG9j
dW1lbnQgYnVpbGRlciwgbWF5IHRocm93IGV4Y2VwdGlvbgotICAgICAvLwotICAgICBidWlsZGVy
ID0gY3JlYXRlQ29uZmlndXJlZEJ1aWxkZXIoKTsKLQotICAgICAgZG9jc0xvYWRlZCA9IDA7Ci0g
ICAgICAKLSAgICAgIHZhciBkb2NSZWYgPSBudWxsOwotICAgICAgaWYgKHR5cGVvZih0aGlzLmRv
YykgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgZG9jUmVmID0gdGhpcy5kb2M7Ci0gICAgICB9
Ci0gICAgICBkb2NzTG9hZGVkICs9IHByZWxvYWQoZG9jUmVmLCAiZG9jIiwgImhjX3N0YWZmIik7
Ci0gICAgICAgIAotICAgICAgIGlmIChkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgICBzZXRV
cFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgICAgIH0KLSAgICB9IGNhdGNoKGV4KSB7Ci0g
ICAgCWNhdGNoSW5pdGlhbGl6YXRpb25FcnJvcihidWlsZGVyLCBleCk7Ci0gICAgICAgIHNldFVw
UGFnZVN0YXR1cyA9ICdjb21wbGV0ZSc7Ci0gICAgfQotfQotCi0KLQotLy8KLS8vICAgVGhpcyBt
ZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBjb21wbGV0aW9uIG9mIAotLy8gICAgICBlYWNoIGFzeWNo
cm9ub3VzIGxvYWQgc3RhcnRlZCBpbiBzZXRVcFRlc3RzLgotLy8KLS8vICAgV2hlbiBldmVyeSBz
eW5jaHJvbm91cyBsb2FkZWQgZG9jdW1lbnQgaGFzIGNvbXBsZXRlZCwKLS8vICAgICAgdGhlIHBh
Z2Ugc3RhdHVzIGlzIGNoYW5nZWQgd2hpY2ggYWxsb3dzIHRoZQotLy8gICAgICBib2R5IG9mIHRo
ZSB0ZXN0IHRvIGJlIGV4ZWN1dGVkLgotZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgewotICAgIGlm
ICgrK2RvY3NMb2FkZWQgPT0gMSkgewotICAgICAgICBzZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxl
dGUnOwotICAgIH0KLX0KLQotCi0vKioKLSogCi0JVXNpbmcgcmVtb3ZlQ2hpbGQgb24gYSBuYW1l
c3BhY2UgQXR0cmlidXRlIG5vZGUgYXR0ZW1wdCB0byByZW1vdmUgaXRzIFRleHQgY2hpbGQgbm9k
ZSBhbmQKLQlhbmQgdmVyaWZ5IHRoZSBuYW1lIG9mIHRoZSByZXR1cm5lZCBub2RlIHRoYXQgd2Fz
IHJlbW92ZWQuICBOb3cgYXR0ZW1wdCB0aGUgcmV2ZXJzZQotCWFuZCB2ZXJpZnkgaWYgYSBOT1Rf
Rk9VTkRfRVJSIGlzIHRocm93bi4KLQotKiBAYXV0aG9yIElCTQotKiBAYXV0aG9yIE5laWwgRGVs
aW1hCi0qIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMtRE9NLUxldmVsLTMtQ29y
ZS0yMDA0MDQwNy9jb3JlI0lELTE3MzQ4MzQwNjYKLSovCi1mdW5jdGlvbiBub2RlcmVtb3ZlY2hp
bGQyOSgpIHsKLSAgIHZhciBzdWNjZXNzOwotICAgIGlmKGNoZWNrSW5pdGlhbGl6YXRpb24oYnVp
bGRlciwgIm5vZGVyZW1vdmVjaGlsZDI5IikgIT0gbnVsbCkgcmV0dXJuOwotICAgIHZhciBkb2M7
Ci0gICAgICB2YXIgcGFyZW50TGlzdDsKLSAgICAgIHZhciBhdHRyc01hcDsKLSAgICAgIHZhciBw
YXJlbnQ7Ci0gICAgICB2YXIgY2hpbGQ7Ci0gICAgICB2YXIgZWxlbTsKLSAgICAgIHZhciByZW1v
dmVkOwotICAgICAgdmFyIHJlbW92ZWROYW1lOwotICAgICAgdmFyIHJlbW92ZWROb2RlOwotICAg
ICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhpcy5kb2Mp
ICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAgICAgfQot
ICAgICAgZG9jID0gbG9hZChkb2NSZWYsICJkb2MiLCAiaGNfc3RhZmYiKTsKLSAgICAgIHBhcmVu
dExpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInAiKTsKLSAgICAgIGVsZW0gPSBwYXJl
bnRMaXN0Lml0ZW0oMCk7Ci0gICAgICBhdHRyc01hcCA9IGVsZW0uYXR0cmlidXRlczsKLQotICAg
ICAgcGFyZW50ID0gYXR0cnNNYXAuZ2V0TmFtZWRJdGVtKCJ4bWxuczpkbXN0YyIpOwotICAgICAg
Y2hpbGQgPSBwYXJlbnQuZmlyc3RDaGlsZDsKLQotICAgICAgcmVtb3ZlZCA9IHBhcmVudC5yZW1v
dmVDaGlsZChjaGlsZCk7Ci0gICAgICByZW1vdmVkTmFtZSA9IHJlbW92ZWQubm9kZVZhbHVlOwot
Ci0gICAgICBhc3NlcnRFcXVhbHMoIm5vZGVyZW1vdmVjaGlsZDI5IiwiaHR0cDovL3d3dy51c2Eu
Y29tIixyZW1vdmVkTmFtZSk7Ci0gICAgICAgCi0JewotCQlzdWNjZXNzID0gZmFsc2U7Ci0JCXRy
eSB7Ci0gICAgICAgICAgICByZW1vdmVkTm9kZSA9IGNoaWxkLnJlbW92ZUNoaWxkKHBhcmVudCk7
Ci0gICAgICAgIH0KLQkJY2F0Y2goZXgpIHsKLSAgICAgIHN1Y2Nlc3MgPSAodHlwZW9mKGV4LmNv
ZGUpICE9ICd1bmRlZmluZWQnICYmIGV4LmNvZGUgPT0gOCk7Ci0JCX0KLQkJYXNzZXJ0VHJ1ZSgi
dGhyb3dfTk9UX0ZPVU5EX0VSUiIsc3VjY2Vzcyk7Ci0JfQotCi19Ci0KLQotCi0KLWZ1bmN0aW9u
IHJ1blRlc3QoKSB7Ci0gICBub2RlcmVtb3ZlY2hpbGQyOSgpOwotfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDI5LnhodG1sIGIv
TGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVyZW1vdmVjaGlsZDI5LnhodG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTM2M2RiZDI2MDBmYjliZWZlNDc4Mjhk
ZGI2ZGI3MDZjY2QyYzYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQy
OS54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEu
MCI/Pjw/VEVTVC1TVFlMRSBQSURBVEE/PgotPCFET0NUWVBFIGh0bWwKLSAgIFBVQkxJQyAiLS8v
VzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCi0gICAieGh0bWwxLXN0cmljdC5kdGQiIFsK
LSAgIDwhRU5USVRZIGFscGhhICImIzk0NTsiPgotICAgPCFFTlRJVFkgYmV0YSAiJiM5NDY7Ij4K
LSAgIDwhRU5USVRZIGdhbW1hICImIzk0NzsiPgotICAgPCFFTlRJVFkgZGVsdGEgIiYjOTQ4OyI+
Ci0gICA8IUVOVElUWSBlcHNpbG9uICImIzk0OTsiPgotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTUw
OyI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMSBQVUJMSUMgIm5vdGF0aW9uMUZpbGUiPgotICAg
PCFOT1RBVElPTiBub3RhdGlvbjIgU1lTVEVNICJub3RhdGlvbjJGaWxlIj4KLSAgIDwhQVRUTElT
VCBwCi0gICAgICAgIGRpciBDREFUQSAncnRsJwotICAgICAgICB4bWxuczpkbXN0YyBDREFUQSAj
SU1QTElFRAotICAgICAgICB4bWxuczpubSBDREFUQSAjSU1QTElFRAotICAgICAgICB4bWxuczpl
bXAyIENEQVRBICNJTVBMSUVEPgotICAgPCFBVFRMSVNUIGh0bWwKLSAgICAgICAgICAgICAgICAg
ICB4bWxuczp4c2kgQ0RBVEEgI0lNUExJRUQKLSAgICAgICAgICAgICAgICAgICB4c2k6c2NoZW1h
TG9jYXRpb24gQ0RBVEEgI0lNUExJRUQ+Ci0gICA8IUFUVExJU1QgYWNyb255bSB4c2k6bm9OYW1l
c3BhY2VTY2hlbWFMb2NhdGlvbiBDREFUQSAjSU1QTElFRD4KLSAgIDwhRU5USVRZIGVudDQgIjxz
cGFuIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz5FbGVtZW50IGRhdGE8L3Nw
YW4+PD9QSXRhcmdldCBQSWRhdGE/PiI+Ci0gICA8IUFUVExJU1Qgc3BhbiB4bWxucyBDREFUQSAj
SU1QTElFRD4KLV0+Ci08IS0tIFRoaXMgaXMgY29tbWVudCBudW1iZXIgMS4tLT4KLTxodG1sIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJwotICAgICAgICB4bWxuczp4c2k9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICAgICAgICB4c2k6c2No
ZW1hTG9jYXRpb249Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwgaGNfc3RhZmYueHNkIj48
aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD1VVEYtOCIvPjx0aXRsZT5oY19zdGFmZjwvdGl0bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0ic2VsZnhodG1sLmpzIi8+PHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im5vZGVyZW1vdmVjaGlsZDI5LmpzIi8+PHNjcmlw
dCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRU
ZXN0KCk7IH08L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+Ci0g
PHAgeG1sbnM6ZG1zdGM9Imh0dHA6Ly93d3cudXNhLmNvbSI+Ci0gIDxlbT5FTVAwMDAxPC9lbT4K
LSAgPHN0cm9uZz5NYXJnYXJldCBNYXJ0aW48L3N0cm9uZz4KLSAgPGNvZGU+QWNjb3VudGFudDwv
Y29kZT4KLSAgPHN1cD41NiwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9u
eW0gdGl0bGU9IlllcyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+MTIzMCBO
b3J0aCBBdmUuIERhbGxhcywgVGV4YXMgOTg1NTE8L2Fjcm9ueW0+Ci0gPC9wPgotIDxwIHhtbG5z
OmRtc3RjPSJodHRwOi8vd3d3LnVzYS5jb20iPgotICA8ZW0+RU1QMDAwMjwvZW0+Ci0gIDxzdHJv
bmc+TWFydGhhIFJheW5vbGRzCi08IVtDREFUQVtUaGlzIGlzIGEgQ0RBVEFTZWN0aW9uIHdpdGgg
RW50aXR5UmVmZXJlbmNlIG51bWJlciAyICZlbnQyO11dPgotPCFbQ0RBVEFbVGhpcyBpcyBhbiBh
ZGphY2VudCBDREFUQVNlY3Rpb24gd2l0aCBhIHJlZmVyZW5jZSB0byBhIHRhYiAmdGFiO11dPjwv
c3Ryb25nPgotICA8Y29kZT5TZWNyZXRhcnk8L2NvZGU+Ci0gIDxzdXA+MzUsMDAwPC9zdXA+Ci0g
IDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiIHhz
aTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJZZXMiPiZiZXRhOyBEYWxsYXMsICZnYW1tYTsK
LSA5ODU1NDwvYWNyb255bT4KLSA8L3A+Ci0gPHAgeG1sbnM6ZG1zdGM9Imh0dHA6Ly93d3cubmV0
emVyby5jb20iPgotICA8ZW0+RU1QMDAwMzwvZW0+Ci0gIDxzdHJvbmc+Um9nZXIKLSBKb25lczwv
c3Ryb25nPgotICA8Y29kZT5EZXBhcnRtZW50IE1hbmFnZXI8L2NvZGU+Ci0gIDxzdXA+MTAwLDAw
MDwvc3VwPgotICA8dmFyPiZlbnQ0OzwvdmFyPgotICA8YWNyb255bSB0aXRsZT0iWWVzIiBjbGFz
cz0iTm8iIGlkPSJfOTg1NTMiIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJZZXMiPlBP
IEJveCAyNyBJcnZpbmcsIHRleGFzIDk4NTUzPC9hY3JvbnltPgotIDwvcD4KLSA8cCB4bWxuczpu
bT0iaHR0cDovL3d3dy5hbHRhdmlzdGEuY29tIj4KLSAgPGVtPkVNUDAwMDQ8L2VtPgotICA8c3Ry
b25nPkplbnkgT2Nvbm5vcjwvc3Ryb25nPgotICA8Y29kZT5QZXJzb25uZWwgRGlyZWN0b3I8L2Nv
ZGU+Ci0gIDxzdXA+OTUsMDAwPC9zdXA+Ci0gIDx2YXI+RmVtYWxlPC92YXI+Ci0gIDxhY3Jvbnlt
IHRpdGxlPSJZZXMiIGNsYXNzPSJZJmFscGhhOyIgaWQ9Il85ODU1NiIgeHNpOm5vTmFtZXNwYWNl
U2NoZW1hTG9jYXRpb249IlllcyI+MjcgU291dGggUm9hZC4gRGFsbGFzLCBUZXhhcyA5ODU1Njwv
YWNyb255bT4KLSA8L3A+Ci0gPHAgeG1sbnM6ZW1wMj0iaHR0cDovL3d3dy5uaXN0LmdvdiI+Ci0g
IDxlbT5FTVAwMDA1PC9lbT4KLSAgPHN0cm9uZz5Sb2JlcnQgTXllcnM8L3N0cm9uZz4KLSAgPGNv
ZGU+Q29tcHV0ZXIgU3BlY2lhbGlzdDwvY29kZT4KLSAgPHN1cD45MCwwMDA8L3N1cD4KLSAgPHZh
cj5tYWxlPC92YXI+Ci0gIDxhY3JvbnltIHRpdGxlPSJZZXMiIGNsYXNzPSJZZXMiIHhzaTpub05h
bWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJZZXMiPjE4MjEgTm9yZGljLiBSb2FkLCBJcnZpbmcgVGV4
YXMgOTg1NTg8L2Fjcm9ueW0+Ci0gPC9wPgotPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQzMC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxk
MzAtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzE5NWVmODY0
ZmY2MmU3OTc4YTY3Mjk0ZmE2ZWMxN2Y5MjU4OWVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9u
b2RlcmVtb3ZlY2hpbGQzMC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLVRlc3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDMvY29y
ZS9ub2RlcmVtb3ZlY2hpbGQzMAotU3RhdHVzCVN1Y2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQzMC5qcyBiL0xheW91dFRl
c3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hpbGQzMC5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNTcwYTQ1ZjEyMzRlYTM5NWJlNGY3ZmQyOTdhZWQzMWJmZDU4
ODdlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxkMzAuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotCi0vKgotQ29weXJpZ2h0IMOCwqkgMjAwMS0yMDA0
IFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIAotKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9m
IFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJlc2VhcmNoIENvbnNvcnRpdW0gCi1mb3IgSW5mb3JtYXRp
Y3MgYW5kIE1hdGhlbWF0aWNzLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgCi1SaWdodHMgUmVzZXJ2
ZWQuIFRoaXMgd29yayBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVzNDw4LCriBTb2Z0d2FyZSBM
aWNlbnNlIFsxXSBpbiB0aGUgCi1ob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIAotdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAKLQot
WzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29m
dHdhcmUtMjAwMjEyMzEKLSovCi0KLQotCi0gICAvKioKLSAgICAqICBHZXRzIFVSSSB0aGF0IGlk
ZW50aWZpZXMgdGhlIHRlc3QuCi0gICAgKiAgQHJldHVybiB1cmkgaWRlbnRpZmllciBvZiB0ZXN0
Ci0gICAgKi8KLWZ1bmN0aW9uIGdldFRhcmdldFVSSSgpIHsKLSAgICAgIHJldHVybiAiaHR0cDov
L3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDMvY29yZS9ub2RlcmVtb3ZlY2hp
bGQzMCI7Ci0gICB9Ci0KLXZhciBkb2NzTG9hZGVkID0gLTEwMDAwMDA7Ci12YXIgYnVpbGRlciA9
IG51bGw7Ci0KLS8vCi0vLyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSB0ZXN0aW5n
IGZyYW1ld29yayBiZWZvcmUKLS8vICAgICAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZS4KLS8vCi0v
LyAgIElmIHRoZXJlIGFyZSBubyBjb25maWd1cmF0aW9uIGV4Y2VwdGlvbnMsIGFzeW5jaHJvbm91
cwotLy8gICAgICAgIGRvY3VtZW50IGxvYWRpbmcgaXMgc3RhcnRlZC4gIE90aGVyd2lzZSwgdGhl
IHN0YXR1cwotLy8gICAgICAgIGlzIHNldCB0byBjb21wbGV0ZSBhbmQgdGhlIGV4Y2VwdGlvbiBp
cyBpbW1lZGlhdGVseQotLy8gICAgICAgIHJhaXNlZCB3aGVuIGVudGVyaW5nIHRoZSBib2R5IG9m
IHRoZSB0ZXN0LgotLy8KLWZ1bmN0aW9uIHNldFVwUGFnZSgpIHsKLSAgIHNldFVwUGFnZVN0YXR1
cyA9ICdydW5uaW5nJzsKLSAgIHRyeSB7Ci0gICAgIC8vCi0gICAgIC8vICAgY3JlYXRlcyB0ZXN0
IGRvY3VtZW50IGJ1aWxkZXIsIG1heSB0aHJvdyBleGNlcHRpb24KLSAgICAgLy8KLSAgICAgYnVp
bGRlciA9IGNyZWF0ZUNvbmZpZ3VyZWRCdWlsZGVyKCk7Ci0KLSAgICAgIGRvY3NMb2FkZWQgPSAw
OwotICAgICAgCi0gICAgICB2YXIgZG9jUmVmID0gbnVsbDsKLSAgICAgIGlmICh0eXBlb2YodGhp
cy5kb2MpICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgICAgIGRvY1JlZiA9IHRoaXMuZG9jOwotICAg
ICAgfQotICAgICAgZG9jc0xvYWRlZCArPSBwcmVsb2FkKGRvY1JlZiwgImRvYyIsICJoY19zdGFm
ZiIpOwotICAgICAgICAKLSAgICAgICBpZiAoZG9jc0xvYWRlZCA9PSAxKSB7Ci0gICAgICAgICAg
c2V0VXBQYWdlU3RhdHVzID0gJ2NvbXBsZXRlJzsKLSAgICAgICB9Ci0gICAgfSBjYXRjaChleCkg
ewotICAgIAljYXRjaEluaXRpYWxpemF0aW9uRXJyb3IoYnVpbGRlciwgZXgpOwotICAgICAgICBz
ZXRVcFBhZ2VTdGF0dXMgPSAnY29tcGxldGUnOwotICAgIH0KLX0KLQotCi0KLS8vCi0vLyAgIFRo
aXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgY29tcGxldGlvbiBvZiAKLS8vICAgICAgZWFjaCBh
c3ljaHJvbm91cyBsb2FkIHN0YXJ0ZWQgaW4gc2V0VXBUZXN0cy4KLS8vCi0vLyAgIFdoZW4gZXZl
cnkgc3luY2hyb25vdXMgbG9hZGVkIGRvY3VtZW50IGhhcyBjb21wbGV0ZWQsCi0vLyAgICAgIHRo
ZSBwYWdlIHN0YXR1cyBpcyBjaGFuZ2VkIHdoaWNoIGFsbG93cyB0aGUKLS8vICAgICAgYm9keSBv
ZiB0aGUgdGVzdCB0byBiZSBleGVjdXRlZC4KLWZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKLSAg
ICBpZiAoKytkb2NzTG9hZGVkID09IDEpIHsKLSAgICAgICAgc2V0VXBQYWdlU3RhdHVzID0gJ2Nv
bXBsZXRlJzsKLSAgICB9Ci19Ci0KLQotLyoqCi0qIAotCi0KLQotCVVzaW5nIHJlbW92ZUNoaWxk
IG9uIGEgZGVmYXVsdCBBdHRyaWJ1dGUgbm9kZSBhdHRlbXB0IHRvIHJlbW92ZSBpdHMgVGV4dCBj
aGlsZCBub2RlIGFuZAotCWFuZCB2ZXJpZnkgdGhlIG5hbWUgb2YgdGhlIHJldHVybmVkIG5vZGUg
dGhhdCB3YXMgcmVtb3ZlZC4gIE5vdyBhdHRlbXB0IHRoZSByZXZlcnNlCi0JYW5kIHZlcmlmeSBp
ZiBhIE5PVF9GT1VORF9FUlIgaXMgdGhyb3duLgotCi0qIEBhdXRob3IgSUJNCi0qIEBhdXRob3Ig
TmVpbCBEZWxpbWEKLSogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy1ET00tTGV2
ZWwtMy1Db3JlLTIwMDQwNDA3L2NvcmUjSUQtMTczNDgzNDA2NgotKi8KLWZ1bmN0aW9uIG5vZGVy
ZW1vdmVjaGlsZDMwKCkgewotICAgdmFyIHN1Y2Nlc3M7Ci0gICAgaWYoY2hlY2tJbml0aWFsaXph
dGlvbihidWlsZGVyLCAibm9kZXJlbW92ZWNoaWxkMzAiKSAhPSBudWxsKSByZXR1cm47Ci0gICAg
dmFyIGRvYzsKLSAgICAgIHZhciBwYXJlbnRMaXN0OwotICAgICAgdmFyIGF0dHJzTWFwOwotICAg
ICAgdmFyIHBhcmVudDsKLSAgICAgIHZhciBjaGlsZDsKLSAgICAgIHZhciBlbGVtOwotICAgICAg
dmFyIHJlbW92ZWQ7Ci0gICAgICB2YXIgcmVtb3ZlZE5vZGU7Ci0gICAgICB2YXIgcmVtb3ZlZE5h
bWU7Ci0gICAgICB2YXIgYXBwZW5kZWRDaGlsZDsKLSAgICAgIAotICAgICAgdmFyIGRvY1JlZiA9
IG51bGw7Ci0gICAgICBpZiAodHlwZW9mKHRoaXMuZG9jKSAhPSAndW5kZWZpbmVkJykgewotICAg
ICAgICBkb2NSZWYgPSB0aGlzLmRvYzsKLSAgICAgIH0KLSAgICAgIGRvYyA9IGxvYWQoZG9jUmVm
LCAiZG9jIiwgImhjX3N0YWZmIik7Ci0gICAgICBwYXJlbnRMaXN0ID0gZG9jLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJwIik7Ci0gICAgICBlbGVtID0gcGFyZW50TGlzdC5pdGVtKDMpOwotICAgICAg
YXR0cnNNYXAgPSBlbGVtLmF0dHJpYnV0ZXM7Ci0KLSAgICAgIHBhcmVudCA9IGF0dHJzTWFwLmdl
dE5hbWVkSXRlbSgiZGlyIik7Ci0gICAgICBjaGlsZCA9IHBhcmVudC5maXJzdENoaWxkOwotCi0g
ICAgICByZW1vdmVkID0gcGFyZW50LnJlbW92ZUNoaWxkKGNoaWxkKTsKLSAgICAgIHJlbW92ZWRO
YW1lID0gcmVtb3ZlZC5ub2RlVmFsdWU7Ci0KLSAgICAgIGFzc2VydEVxdWFscygibm9kZXJlbW92
ZWNoaWxkMzAiLCJydGwiLHJlbW92ZWROYW1lKTsKLSAgICAgICAKLQl7Ci0JCXN1Y2Nlc3MgPSBm
YWxzZTsKLQkJdHJ5IHsKLSAgICAgICAgICAgIHJlbW92ZWROb2RlID0gY2hpbGQucmVtb3ZlQ2hp
bGQocGFyZW50KTsKLSAgICAgICAgfQotCQljYXRjaChleCkgewotICAgICAgc3VjY2VzcyA9ICh0
eXBlb2YoZXguY29kZSkgIT0gJ3VuZGVmaW5lZCcgJiYgZXguY29kZSA9PSA4KTsKLQkJfQotCQlh
c3NlcnRUcnVlKCJ0aHJvd19OT1RfRk9VTkRfRVJSIixzdWNjZXNzKTsKLQl9Ci0KLX0KLQotCi0K
LQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgIG5vZGVyZW1vdmVjaGlsZDMwKCk7Ci19CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNoaWxk
MzAueGh0bWwgYi9MYXlvdXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvbm9kZXJlbW92ZWNo
aWxkMzAueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZGM3MDk3OTUwZTIy
MzQ0YjkyMjI4OWY4OTMwYThkNTQxZWMxNWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL25vZGVy
ZW1vdmVjaGlsZDMwLnhodG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotPD94bWwg
dmVyc2lvbj0iMS4wIj8+PD9URVNULVNUWUxFIFBJREFUQT8+Ci08IURPQ1RZUEUgaHRtbAotICAg
UFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKLSAgICJ4aHRtbDEtc3Ry
aWN0LmR0ZCIgWwotICAgPCFFTlRJVFkgYWxwaGEgIiYjOTQ1OyI+Ci0gICA8IUVOVElUWSBiZXRh
ICImIzk0NjsiPgotICAgPCFFTlRJVFkgZ2FtbWEgIiYjOTQ3OyI+Ci0gICA8IUVOVElUWSBkZWx0
YSAiJiM5NDg7Ij4KLSAgIDwhRU5USVRZIGVwc2lsb24gIiYjOTQ5OyI+Ci0gICA8IUVOVElUWSBh
bHBoYSAiJiM5NTA7Ij4KLSAgIDwhTk9UQVRJT04gbm90YXRpb24xIFBVQkxJQyAibm90YXRpb24x
RmlsZSI+Ci0gICA8IU5PVEFUSU9OIG5vdGF0aW9uMiBTWVNURU0gIm5vdGF0aW9uMkZpbGUiPgot
ICAgPCFBVFRMSVNUIHAKLSAgICAgICAgZGlyIENEQVRBICdydGwnCi0gICAgICAgIHhtbG5zOmRt
c3RjIENEQVRBICNJTVBMSUVECi0gICAgICAgIHhtbG5zOm5tIENEQVRBICNJTVBMSUVECi0gICAg
ICAgIHhtbG5zOmVtcDIgQ0RBVEEgI0lNUExJRUQ+Ci0gICA8IUFUVExJU1QgaHRtbAotICAgICAg
ICAgICAgICAgICAgIHhtbG5zOnhzaSBDREFUQSAjSU1QTElFRAotICAgICAgICAgICAgICAgICAg
IHhzaTpzY2hlbWFMb2NhdGlvbiBDREFUQSAjSU1QTElFRD4KLSAgIDwhQVRUTElTVCBhY3Jvbnlt
IHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uIENEQVRBICNJTVBMSUVEPgotICAgPCFFTlRJ
VFkgZW50NCAiPHNwYW4geG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPkVsZW1l
bnQgZGF0YTwvc3Bhbj48P1BJdGFyZ2V0IFBJZGF0YT8+Ij4KLSAgIDwhQVRUTElTVCBzcGFuIHht
bG5zIENEQVRBICNJTVBMSUVEPgotXT4KLTwhLS0gVGhpcyBpcyBjb21tZW50IG51bWJlciAxLi0t
PgotPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnCi0gICAgICAgIHht
bG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gICAg
ICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCBoY19z
dGFmZi54c2QiPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PHRpdGxlPmhjX3N0YWZmPC90aXRsZT48c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWxmeGh0bWwuanMiLz48c2NyaXB0IGNoYXJz
ZXQ9IlVURi04IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibm9kZXJlbW92ZWNoaWxkMzAu
anMiLz48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRl
KCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRDb21w
bGV0ZSgpIj4KLSA8cCB4bWxuczpkbXN0Yz0iaHR0cDovL3d3dy51c2EuY29tIj4KLSAgPGVtPkVN
UDAwMDE8L2VtPgotICA8c3Ryb25nPk1hcmdhcmV0IE1hcnRpbjwvc3Ryb25nPgotICA8Y29kZT5B
Y2NvdW50YW50PC9jb2RlPgotICA8c3VwPjU2LDAwMDwvc3VwPgotICA8dmFyPkZlbWFsZTwvdmFy
PgotICA8YWNyb255bSB0aXRsZT0iWWVzIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0i
WWVzIj4xMjMwIE5vcnRoIEF2ZS4gRGFsbGFzLCBUZXhhcyA5ODU1MTwvYWNyb255bT4KLSA8L3A+
Ci0gPHAgeG1sbnM6ZG1zdGM9Imh0dHA6Ly93d3cudXNhLmNvbSI+Ci0gIDxlbT5FTVAwMDAyPC9l
bT4KLSAgPHN0cm9uZz5NYXJ0aGEgUmF5bm9sZHMKLTwhW0NEQVRBW1RoaXMgaXMgYSBDREFUQVNl
Y3Rpb24gd2l0aCBFbnRpdHlSZWZlcmVuY2UgbnVtYmVyIDIgJmVudDI7XV0+Ci08IVtDREFUQVtU
aGlzIGlzIGFuIGFkamFjZW50IENEQVRBU2VjdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgdGFi
ICZ0YWI7XV0+PC9zdHJvbmc+Ci0gIDxjb2RlPlNlY3JldGFyeTwvY29kZT4KLSAgPHN1cD4zNSww
MDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xh
c3M9IlllcyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+JmJldGE7IERhbGxh
cywgJmdhbW1hOwotIDk4NTU0PC9hY3JvbnltPgotIDwvcD4KLSA8cCB4bWxuczpkbXN0Yz0iaHR0
cDovL3d3dy5uZXR6ZXJvLmNvbSI+Ci0gIDxlbT5FTVAwMDAzPC9lbT4KLSAgPHN0cm9uZz5Sb2dl
cgotIEpvbmVzPC9zdHJvbmc+Ci0gIDxjb2RlPkRlcGFydG1lbnQgTWFuYWdlcjwvY29kZT4KLSAg
PHN1cD4xMDAsMDAwPC9zdXA+Ci0gIDx2YXI+JmVudDQ7PC92YXI+Ci0gIDxhY3JvbnltIHRpdGxl
PSJZZXMiIGNsYXNzPSJObyIgaWQ9Il85ODU1MyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRp
b249IlllcyI+UE8gQm94IDI3IElydmluZywgdGV4YXMgOTg1NTM8L2Fjcm9ueW0+Ci0gPC9wPgot
IDxwIHhtbG5zOm5tPSJodHRwOi8vd3d3LmFsdGF2aXN0YS5jb20iPgotICA8ZW0+RU1QMDAwNDwv
ZW0+Ci0gIDxzdHJvbmc+SmVueSBPY29ubm9yPC9zdHJvbmc+Ci0gIDxjb2RlPlBlcnNvbm5lbCBE
aXJlY3RvcjwvY29kZT4KLSAgPHN1cD45NSwwMDA8L3N1cD4KLSAgPHZhcj5GZW1hbGU8L3Zhcj4K
LSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9IlkmYWxwaGE7IiBpZD0iXzk4NTU2IiB4c2k6
bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iWWVzIj4yNyBTb3V0aCBSb2FkLiBEYWxsYXMsIFRl
eGFzIDk4NTU2PC9hY3JvbnltPgotIDwvcD4KLSA8cCB4bWxuczplbXAyPSJodHRwOi8vd3d3Lm5p
c3QuZ292Ij4KLSAgPGVtPkVNUDAwMDU8L2VtPgotICA8c3Ryb25nPlJvYmVydCBNeWVyczwvc3Ry
b25nPgotICA8Y29kZT5Db21wdXRlciBTcGVjaWFsaXN0PC9jb2RlPgotICA8c3VwPjkwLDAwMDwv
c3VwPgotICA8dmFyPm1hbGU8L3Zhcj4KLSAgPGFjcm9ueW0gdGl0bGU9IlllcyIgY2xhc3M9Illl
cyIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249IlllcyI+MTgyMSBOb3JkaWMuIFJvYWQs
IElydmluZyBUZXhhcyA5ODU1ODwvYWNyb255bT4KLSA8L3A+Ci08L2JvZHk+PC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcmVhY3Rpb25zLWZvci13
ZWJraXQtZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1l
bGVtZW50cy9yZWFjdGlvbnMtZm9yLXdlYmtpdC1leHRlbnNpb25zLWV4cGVjdGVkLnR4dAppbmRl
eCBhZDcxOTc3ODU5NmVmY2ZkNDE2YTQ5YzViOTA5MmMyZjE0ZTQ3MDZlLi45ZjU3OWU2Yjc5MDEx
MjI5NjM0YzZhMjZjYzNlZmY1NjcyYTUxMGVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2N1c3RvbS1lbGVtZW50cy9yZWFjdGlvbnMtZm9yLXdlYmtpdC1leHRlbnNpb25zLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9yZWFjdGlvbnMtZm9y
LXdlYmtpdC1leHRlbnNpb25zLWV4cGVjdGVkLnR4dApAQCAtMywxMCArMyw2IEBAIFBBU1MgZHJv
cHpvbmUgb24gSFRNTEVsZW1lbnQgbXVzdCBlbnF1ZXVlIGFuIGF0dHJpYnV0ZUNoYW5nZWQgcmVh
Y3Rpb24gd2hlbiBhZGRpCiBQQVNTIGRyb3B6b25lIG9uIEhUTUxFbGVtZW50IG11c3QgZW5xdWV1
ZSBhbiBhdHRyaWJ1dGVDaGFuZ2VkIHJlYWN0aW9uIHdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5n
IGF0dHJpYnV0ZSAKIFBBU1MgZGF0YSBvbiBDaGFyYWN0ZXJEYXRhIG11c3QgZW5xdWV1ZSBhbiBh
dHRyaWJ1dGVDaGFuZ2VkIHJlYWN0aW9uIHdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGF0dHJp
YnV0ZSAKIFBBU1MgZGF0YSBvbiBDaGFyYWN0ZXJEYXRhIG11c3Qgbm90IGVucXVldWUgYW4gYXR0
cmlidXRlQ2hhbmdlZCByZWFjdGlvbiB3aGVuIHJlcGxhY2luZyBhbiBleGlzdGluZyB1bm9ic2Vy
dmVkIGF0dHJpYnV0ZSAKLVBBU1MgYXBwZW5kRGF0YSBvbiBDaGFyYWN0ZXJEYXRhIG11c3QgZW5x
dWV1ZSBhbiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgd2hlbiBtdXRhdGluZyBhbiBleGlzdGlu
ZyBhdHRyaWJ1dGUgCi1QQVNTIGluc2VydERhdGEgb24gQ2hhcmFjdGVyRGF0YSBtdXN0IGVucXVl
dWUgYW4gYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIHdoZW4gbXV0YXRpbmcgYW4gZXhpc3Rpbmcg
YXR0cmlidXRlIAotUEFTUyBkZWxldGVEYXRhIG9uIENoYXJhY3RlckRhdGEgbXVzdCBlbnF1ZXVl
IGFuIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayB3aGVuIG11dGF0aW5nIGFuIGV4aXN0aW5nIGF0
dHJpYnV0ZSAKLVBBU1MgcmVwbGFjZURhdGEgb24gQ2hhcmFjdGVyRGF0YSBtdXN0IGVucXVldWUg
YW4gYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIHdoZW4gbXV0YXRpbmcgYW4gZXhpc3RpbmcgYXR0
cmlidXRlIAogUEFTUyByZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQpIG9uIEhUTUxPcHRpb25zQ29s
bGVjdGlvbiBtdXN0IGVucXVldWUgZGlzY29ubmVjdGVkQ2FsbGJhY2sgd2hlbiByZW1vdmluZyBh
IGN1c3RvbSBlbGVtZW50IAogUEFTUyByZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQpIG9uIEhUTUxT
ZWxlY3RFbGVtZW50IG11c3QgZW5xdWV1ZSBkaXNjb25uZWN0ZWRDYWxsYmFjayB3aGVuIHJlbW92
aW5nIGEgY3VzdG9tIGVsZW1lbnQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL3JlYWN0aW9ucy1mb3Itd2Via2l0LWV4dGVuc2lvbnMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3JlYWN0aW9ucy1mb3Itd2Via2l0LWV4dGVuc2lv
bnMuaHRtbAppbmRleCBhNjNkNTczYTFlOWJiM2JlODUxOTkyMWYzNjAxZjk5OTg3MjAxOTJkLi5l
MjAwYzRjN2FhMDgyYWUzYmVkMzZiZWI5ZmUyYjBiZjQ0NzZmZTBmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9yZWFjdGlvbnMtZm9yLXdlYmtpdC1leHRlbnNp
b25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcmVhY3Rpb25z
LWZvci13ZWJraXQtZXh0ZW5zaW9ucy5odG1sCkBAIC0xNyw1MyArMTcsOSBAQAogdGVzdFJlZmxl
Y3RBdHRyaWJ1dGUoJ3dlYmtpdGRyb3B6b25lJywgJ3dlYmtpdGRyb3B6b25lJywgJ2NvcHknLCAn
bW92ZScsICdkcm9wem9uZSBvbiBIVE1MRWxlbWVudCcpOwogCiB0ZXN0QXR0cmlidXRlTXV0YXRv
cihmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHsKLSAgICBlbGVtZW50LmF0dHJpYnV0
ZXNbbmFtZV0uZmlyc3RDaGlsZC5kYXRhID0gdmFsdWU7CisgICAgZWxlbWVudC5hdHRyaWJ1dGVz
W25hbWVdLnZhbHVlID0gdmFsdWU7CiB9LCAnZGF0YSBvbiBDaGFyYWN0ZXJEYXRhJyk7CiAKLXRl
c3QoZnVuY3Rpb24gKCkgewotICAgIHZhciBlbGVtZW50ID0gZGVmaW5lX25ld19jdXN0b21fZWxl
bWVudChbJ3RpdGxlJ10pOwotICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoZWxlbWVudC5uYW1lKTsKLSAgICBpbnN0YW5jZS5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgJ2hl
bGxvJyk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhlbGVtZW50LnRha2VMb2coKS50eXBlcygp
LCBbJ2NvbnN0cnVjdGVkJywgJ2F0dHJpYnV0ZUNoYW5nZWQnXSk7Ci0gICAgaW5zdGFuY2UuYXR0
cmlidXRlcy50aXRsZS5maXJzdENoaWxkLmFwcGVuZERhdGEoJyB3b3JsZCcpOwotICAgIHZhciBs
b2dFbnRyaWVzID0gZWxlbWVudC50YWtlTG9nKCk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dFbnRyaWVzLnR5cGVzKCksIFsnYXR0cmlidXRlQ2hhbmdlZCddKTsKLSAgICBhc3NlcnRfYXR0
cmlidXRlX2xvZ19lbnRyeShsb2dFbnRyaWVzLmxhc3QoKSwge25hbWU6ICd0aXRsZScsIG9sZFZh
bHVlOiAnaGVsbG8nLCBuZXdWYWx1ZTogJ2hlbGxvIHdvcmxkJywgbmFtZXNwYWNlOiBudWxsfSk7
Ci19LCAnYXBwZW5kRGF0YSBvbiBDaGFyYWN0ZXJEYXRhIG11c3QgZW5xdWV1ZSBhbiBhdHRyaWJ1
dGVDaGFuZ2VkQ2FsbGJhY2sgd2hlbiBtdXRhdGluZyBhbiBleGlzdGluZyBhdHRyaWJ1dGUnKTsK
LQotdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGVsZW1lbnQgPSBkZWZpbmVfbmV3X2N1c3Rv
bV9lbGVtZW50KFsndGl0bGUnXSk7Ci0gICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudChlbGVtZW50Lm5hbWUpOwotICAgIGluc3RhbmNlLnNldEF0dHJpYnV0ZSgndGl0bGUn
LCAnZm9vJyk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhlbGVtZW50LnRha2VMb2coKS50eXBl
cygpLCBbJ2NvbnN0cnVjdGVkJywgJ2F0dHJpYnV0ZUNoYW5nZWQnXSk7Ci0gICAgaW5zdGFuY2Uu
YXR0cmlidXRlcy50aXRsZS5maXJzdENoaWxkLmluc2VydERhdGEoMiwgJ2JhcicpOwotICAgIHZh
ciBsb2dFbnRyaWVzID0gZWxlbWVudC50YWtlTG9nKCk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhsb2dFbnRyaWVzLnR5cGVzKCksIFsnYXR0cmlidXRlQ2hhbmdlZCddKTsKLSAgICBhc3NlcnRf
YXR0cmlidXRlX2xvZ19lbnRyeShsb2dFbnRyaWVzLmxhc3QoKSwge25hbWU6ICd0aXRsZScsIG9s
ZFZhbHVlOiAnZm9vJywgbmV3VmFsdWU6ICdmb2Jhcm8nLCBuYW1lc3BhY2U6IG51bGx9KTsKLX0s
ICdpbnNlcnREYXRhIG9uIENoYXJhY3RlckRhdGEgbXVzdCBlbnF1ZXVlIGFuIGF0dHJpYnV0ZUNo
YW5nZWRDYWxsYmFjayB3aGVuIG11dGF0aW5nIGFuIGV4aXN0aW5nIGF0dHJpYnV0ZScpOwotCi10
ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgZWxlbWVudCA9IGRlZmluZV9uZXdfY3VzdG9tX2Vs
ZW1lbnQoWyd0aXRsZSddKTsKLSAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KGVsZW1lbnQubmFtZSk7Ci0gICAgaW5zdGFuY2Uuc2V0QXR0cmlidXRlKCd0aXRsZScsICdo
ZWxsbyB3b3JsZCcpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZWxlbWVudC50YWtlTG9nKCku
dHlwZXMoKSwgWydjb25zdHJ1Y3RlZCcsICdhdHRyaWJ1dGVDaGFuZ2VkJ10pOwotICAgIGluc3Rh
bmNlLmF0dHJpYnV0ZXMudGl0bGUuZmlyc3RDaGlsZC5kZWxldGVEYXRhKDUsIDEwMCk7Ci0gICAg
dmFyIGxvZ0VudHJpZXMgPSBlbGVtZW50LnRha2VMb2coKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZ0VudHJpZXMudHlwZXMoKSwgWydhdHRyaWJ1dGVDaGFuZ2VkJ10pOwotICAgIGFzc2Vy
dF9hdHRyaWJ1dGVfbG9nX2VudHJ5KGxvZ0VudHJpZXMubGFzdCgpLCB7bmFtZTogJ3RpdGxlJywg
b2xkVmFsdWU6ICdoZWxsbyB3b3JsZCcsIG5ld1ZhbHVlOiAnaGVsbG8nLCBuYW1lc3BhY2U6IG51
bGx9KTsKLX0sICdkZWxldGVEYXRhIG9uIENoYXJhY3RlckRhdGEgbXVzdCBlbnF1ZXVlIGFuIGF0
dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayB3aGVuIG11dGF0aW5nIGFuIGV4aXN0aW5nIGF0dHJpYnV0
ZScpOwotCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgZWxlbWVudCA9IGRlZmluZV9uZXdf
Y3VzdG9tX2VsZW1lbnQoWyd0aXRsZSddKTsKLSAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KGVsZW1lbnQubmFtZSk7Ci0gICAgaW5zdGFuY2Uuc2V0QXR0cmlidXRlKCd0
aXRsZScsICdoZWxsbycpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZWxlbWVudC50YWtlTG9n
KCkudHlwZXMoKSwgWydjb25zdHJ1Y3RlZCcsICdhdHRyaWJ1dGVDaGFuZ2VkJ10pOwotICAgIGlu
c3RhbmNlLmF0dHJpYnV0ZXMudGl0bGUuZmlyc3RDaGlsZC5yZXBsYWNlRGF0YSgxLCA0LCAnaScp
OwotICAgIHZhciBsb2dFbnRyaWVzID0gZWxlbWVudC50YWtlTG9nKCk7Ci0gICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhsb2dFbnRyaWVzLnR5cGVzKCksIFsnYXR0cmlidXRlQ2hhbmdlZCddKTsKLSAg
ICBhc3NlcnRfYXR0cmlidXRlX2xvZ19lbnRyeShsb2dFbnRyaWVzLmxhc3QoKSwge25hbWU6ICd0
aXRsZScsIG9sZFZhbHVlOiAnaGVsbG8nLCBuZXdWYWx1ZTogJ2hpJywgbmFtZXNwYWNlOiBudWxs
fSk7Ci19LCAncmVwbGFjZURhdGEgb24gQ2hhcmFjdGVyRGF0YSBtdXN0IGVucXVldWUgYW4gYXR0
cmlidXRlQ2hhbmdlZENhbGxiYWNrIHdoZW4gbXV0YXRpbmcgYW4gZXhpc3RpbmcgYXR0cmlidXRl
Jyk7Ci0KIHRlc3Rfd2l0aF93aW5kb3coZnVuY3Rpb24gKGNvbnRlbnRXaW5kb3cpIHsKICAgICBj
b25zdCBlbGVtZW50ID0gZGVmaW5lX2N1c3RvbV9lbGVtZW50X2luX3dpbmRvdyhjb250ZW50V2lu
ZG93LCAnY3VzdG9tLWVsZW1lbnQnLCBbXSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0F0dHIvY2Fubm90LWhhdmUtY2hpbGRyZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vQXR0ci9jYW5ub3QtaGF2ZS1jaGlsZHJlbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmY3MGQ4YWFlZjM4NmJmMjc5YTExMjk3ZDgwODg0Mzc3NTk4YzFlYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2Fubm90LWhhdmUtY2hpbGRyZW4t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODIgQEAKK1Rlc3RzIHRoYXQgQXR0ciBOb2RlcyBjYW5u
b3QgaGF2ZSBjaGlsZHJlbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
aWRBdHRyLl9fcHJvdG9fXyBpcyBBdHRyLnByb3RvdHlwZQorUEFTUyBpZEF0dHIub3duZXJFbGVt
ZW50IGlzIGRvY3VtZW50LmJvZHkKK1BBU1MgaWRBdHRyLm5hbWUgaXMgImlkIgorUEFTUyBpZEF0
dHIubG9jYWxOYW1lIGlzICJpZCIKK1BBU1MgaWRBdHRyLnBhcmVudE5vZGUgaXMgbnVsbAorUEFT
UyBpZEF0dHIuZmlyc3RDaGlsZCBpcyBudWxsCitQQVNTIGlkQXR0ci5sYXN0Q2hpbGQgaXMgbnVs
bAorUEFTUyBpZEF0dHIuaGFzQ2hpbGROb2RlcygpIGlzIGZhbHNlCitQQVNTIGlkQXR0ci5jaGls
ZE5vZGVzLmxlbmd0aCBpcyAwCitQQVNTIGlkQXR0ci52YWx1ZSBpcyAidGVzdCIKK1BBU1MgaWRB
dHRyLm5vZGVWYWx1ZSBpcyAidGVzdCIKK1BBU1MgaWRBdHRyLnRleHRDb250ZW50IGlzICJ0ZXN0
IgorUEFTUyBpZEF0dHIuYXBwZW5kQ2hpbGQodGV4dCkgdGhyZXcgZXhjZXB0aW9uIEhpZXJhcmNo
eVJlcXVlc3RFcnJvciAoRE9NIEV4Y2VwdGlvbiAzKTogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVs
ZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLi4KK1BBU1MgaWRBdHRyLmluc2VydEJlZm9yZSh0ZXh0
LCBudWxsKSB0aHJldyBleGNlcHRpb24gSGllcmFyY2h5UmVxdWVzdEVycm9yIChET00gRXhjZXB0
aW9uIDMpOiBUaGUgb3BlcmF0aW9uIHdvdWxkIHlpZWxkIGFuIGluY29ycmVjdCBub2RlIHRyZWUu
LgorCitQQVNTIGRldGFjaGVkQXR0ci5uYW1lIGlzICJmb28iCitQQVNTIGRldGFjaGVkQXR0ci5s
b2NhbE5hbWUgaXMgImZvbyIKK1BBU1MgZGV0YWNoZWRBdHRyLnZhbHVlIGlzICIiCitQQVNTIGRl
dGFjaGVkQXR0ci5ub2RlVmFsdWUgaXMgIiIKK1BBU1MgZGV0YWNoZWRBdHRyLnRleHRDb250ZW50
IGlzICIiCitQQVNTIGRldGFjaGVkQXR0ci5vd25lckVsZW1lbnQgaXMgbnVsbAorUEFTUyBkZXRh
Y2hlZEF0dHIucGFyZW50Tm9kZSBpcyBudWxsCitQQVNTIGRldGFjaGVkQXR0ci5maXJzdENoaWxk
IGlzIG51bGwKK1BBU1MgZGV0YWNoZWRBdHRyLmxhc3RDaGlsZCBpcyBudWxsCitQQVNTIGRldGFj
aGVkQXR0ci5oYXNDaGlsZE5vZGVzKCkgaXMgZmFsc2UKK1BBU1MgZGV0YWNoZWRBdHRyLmNoaWxk
Tm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgZGV0YWNoZWRBdHRyLmFwcGVuZENoaWxkKHRleHQpIHRo
cmV3IGV4Y2VwdGlvbiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3IgKERPTSBFeGNlcHRpb24gMyk6IFRo
ZSBvcGVyYXRpb24gd291bGQgeWllbGQgYW4gaW5jb3JyZWN0IG5vZGUgdHJlZS4uCitQQVNTIGRl
dGFjaGVkQXR0ci5pbnNlcnRCZWZvcmUodGV4dCwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIEhpZXJh
cmNoeVJlcXVlc3RFcnJvciAoRE9NIEV4Y2VwdGlvbiAzKTogVGhlIG9wZXJhdGlvbiB3b3VsZCB5
aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLi4KKworZGV0YWNoZWRBdHRyLnZhbHVlID0gJ2Jh
cicKK1BBU1MgZGV0YWNoZWRBdHRyLnZhbHVlIGlzICJiYXIiCitQQVNTIGRldGFjaGVkQXR0ci5u
b2RlVmFsdWUgaXMgImJhciIKK1BBU1MgZGV0YWNoZWRBdHRyLnRleHRDb250ZW50IGlzICJiYXIi
CitQQVNTIGRldGFjaGVkQXR0ci5maXJzdENoaWxkIGlzIG51bGwKK1BBU1MgZGV0YWNoZWRBdHRy
Lmxhc3RDaGlsZCBpcyBudWxsCitQQVNTIGRldGFjaGVkQXR0ci5oYXNDaGlsZE5vZGVzKCkgaXMg
ZmFsc2UKK1BBU1MgZGV0YWNoZWRBdHRyLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDAKKworZGV0YWNo
ZWRBdHRyLm5vZGVWYWx1ZSA9ICdiYXIyJworUEFTUyBkZXRhY2hlZEF0dHIudmFsdWUgaXMgImJh
cjIiCitQQVNTIGRldGFjaGVkQXR0ci5ub2RlVmFsdWUgaXMgImJhcjIiCitQQVNTIGRldGFjaGVk
QXR0ci50ZXh0Q29udGVudCBpcyAiYmFyMiIKKworZGV0YWNoZWRBdHRyLnRleHRDb250ZW50ID0g
J2JhcjMnCitQQVNTIGRldGFjaGVkQXR0ci52YWx1ZSBpcyAiYmFyMyIKK1BBU1MgZGV0YWNoZWRB
dHRyLm5vZGVWYWx1ZSBpcyAiYmFyMyIKK1BBU1MgZGV0YWNoZWRBdHRyLnRleHRDb250ZW50IGlz
ICJiYXIzIgorCitkZXRhY2hlZEF0dHIudmFsdWUgPSBudWxsCitQQVNTIGRldGFjaGVkQXR0ci52
YWx1ZSBpcyAibnVsbCIKKworZGV0YWNoZWRBdHRyLm5vZGVWYWx1ZSA9IG51bGwKK1BBU1MgZGV0
YWNoZWRBdHRyLnZhbHVlIGlzICIiCisKK2RldGFjaGVkQXR0ci50ZXh0Q29udGVudCA9IG51bGwK
K1BBU1MgZGV0YWNoZWRBdHRyLnZhbHVlIGlzICIiCisKK2RldGFjaGVkQXR0ci52YWx1ZSA9ICdi
YXInCitkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZU5vZGUoZGV0YWNoZWRBdHRyKQorUEFTUyBm
b29BdHRyLm93bmVyRWxlbWVudCBpcyBkb2N1bWVudC5ib2R5CitQQVNTIGRvY3VtZW50LmJvZHku
Z2V0QXR0cmlidXRlTm9kZSgnZm9vJykgaXMgZm9vQXR0cgorUEFTUyBkb2N1bWVudC5ib2R5Lmdl
dEF0dHJpYnV0ZSgnZm9vJykgaXMgImJhciIKK1BBU1MgZm9vQXR0ci52YWx1ZSBpcyAiYmFyIgor
UEFTUyBkb2N1bWVudC5ib2R5LmF0dHJpYnV0ZXMuZm9vIGlzIGZvb0F0dHIKK1BBU1MgZG9jdW1l
bnQuYm9keS5hdHRyaWJ1dGVzWydmb28nXSBpcyBmb29BdHRyCitQQVNTIGRvY3VtZW50LmJvZHku
YXR0cmlidXRlc1sxXSBpcyBmb29BdHRyCitQQVNTIGZvb0F0dHIuZmlyc3RDaGlsZCBpcyBudWxs
CitQQVNTIGZvb0F0dHIubGFzdENoaWxkIGlzIG51bGwKK1BBU1MgZm9vQXR0ci5oYXNDaGlsZE5v
ZGVzKCkgaXMgZmFsc2UKK1BBU1MgZm9vQXR0ci5jaGlsZE5vZGVzLmxlbmd0aCBpcyAwCitQQVNT
IGZvb0F0dHIuYXBwZW5kQ2hpbGQodGV4dCkgdGhyZXcgZXhjZXB0aW9uIEhpZXJhcmNoeVJlcXVl
c3RFcnJvciAoRE9NIEV4Y2VwdGlvbiAzKTogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBp
bmNvcnJlY3Qgbm9kZSB0cmVlLi4KK1BBU1MgZm9vQXR0ci5pbnNlcnRCZWZvcmUodGV4dCwgbnVs
bCkgdGhyZXcgZXhjZXB0aW9uIEhpZXJhcmNoeVJlcXVlc3RFcnJvciAoRE9NIEV4Y2VwdGlvbiAz
KTogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLi4KKwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2Fubm90LWhhdmUtY2hpbGRyZW4uaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2Fubm90LWhhdmUtY2hpbGRyZW4uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zY2NkNWYzZTljYjlkNGM5NmI0ODRmZDE2ZDMyNzU2Zjk1YmE3Yjk0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jYW5ub3QtaGF2ZS1jaGls
ZHJlbi5odG1sCkBAIC0wLDAgKzEsOTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eSBpZD0idGVzdCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBBdHRyIE5v
ZGVzIGNhbm5vdCBoYXZlIGNoaWxkcmVuLiIpOworCitjb25zdCBpZEF0dHIgPSBkb2N1bWVudC5i
b2R5LmdldEF0dHJpYnV0ZU5vZGUoImlkIik7CitzaG91bGRCZSgiaWRBdHRyLl9fcHJvdG9fXyIs
ICJBdHRyLnByb3RvdHlwZSIpOworc2hvdWxkQmUoImlkQXR0ci5vd25lckVsZW1lbnQiLCAiZG9j
dW1lbnQuYm9keSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpZEF0dHIubmFtZSIsICJpZCIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpZEF0dHIubG9jYWxOYW1lIiwgImlkIik7CitzaG91
bGRCZU51bGwoImlkQXR0ci5wYXJlbnROb2RlIik7CitzaG91bGRCZU51bGwoImlkQXR0ci5maXJz
dENoaWxkIik7CitzaG91bGRCZU51bGwoImlkQXR0ci5sYXN0Q2hpbGQiKTsKK3Nob3VsZEJlRmFs
c2UoImlkQXR0ci5oYXNDaGlsZE5vZGVzKCkiKTsKK3Nob3VsZEJlKCJpZEF0dHIuY2hpbGROb2Rl
cy5sZW5ndGgiICwgIjAiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaWRBdHRyLnZhbHVlIiwg
InRlc3QiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaWRBdHRyLm5vZGVWYWx1ZSIsICJ0ZXN0
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlkQXR0ci50ZXh0Q29udGVudCIsICJ0ZXN0Iik7
CisKK2NvbnN0IHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiYmFyIik7CitzaG91bGRU
aHJvd0Vycm9yTmFtZSgiaWRBdHRyLmFwcGVuZENoaWxkKHRleHQpIiwgIkhpZXJhcmNoeVJlcXVl
c3RFcnJvciIpOworc2hvdWxkVGhyb3dFcnJvck5hbWUoImlkQXR0ci5pbnNlcnRCZWZvcmUodGV4
dCwgbnVsbCkiLCAiSGllcmFyY2h5UmVxdWVzdEVycm9yIik7CisKK2RlYnVnKCIiKTsKK2xldCBk
ZXRhY2hlZEF0dHIgPSBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUoImZvbyIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkZXRhY2hlZEF0dHIubmFtZSIsICJmb28iKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygiZGV0YWNoZWRBdHRyLmxvY2FsTmFtZSIsICJmb28iKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygiZGV0YWNoZWRBdHRyLnZhbHVlIiwgIiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkZXRhY2hlZEF0dHIubm9kZVZhbHVlIiwgIiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
ZXRhY2hlZEF0dHIudGV4dENvbnRlbnQiLCAiIik7CitzaG91bGRCZU51bGwoImRldGFjaGVkQXR0
ci5vd25lckVsZW1lbnQiKQorc2hvdWxkQmVOdWxsKCJkZXRhY2hlZEF0dHIucGFyZW50Tm9kZSIp
Oworc2hvdWxkQmVOdWxsKCJkZXRhY2hlZEF0dHIuZmlyc3RDaGlsZCIpOworc2hvdWxkQmVOdWxs
KCJkZXRhY2hlZEF0dHIubGFzdENoaWxkIik7CitzaG91bGRCZUZhbHNlKCJkZXRhY2hlZEF0dHIu
aGFzQ2hpbGROb2RlcygpIik7CitzaG91bGRCZSgiZGV0YWNoZWRBdHRyLmNoaWxkTm9kZXMubGVu
Z3RoIiAsICIwIik7CitzaG91bGRUaHJvd0Vycm9yTmFtZSgiZGV0YWNoZWRBdHRyLmFwcGVuZENo
aWxkKHRleHQpIiwgIkhpZXJhcmNoeVJlcXVlc3RFcnJvciIpOworc2hvdWxkVGhyb3dFcnJvck5h
bWUoImRldGFjaGVkQXR0ci5pbnNlcnRCZWZvcmUodGV4dCwgbnVsbCkiLCAiSGllcmFyY2h5UmVx
dWVzdEVycm9yIik7CisKK2RlYnVnKCIiKTsKK2V2YWxBbmRMb2coImRldGFjaGVkQXR0ci52YWx1
ZSA9ICdiYXInIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRldGFjaGVkQXR0ci52YWx1ZSIs
ICJiYXIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZGV0YWNoZWRBdHRyLm5vZGVWYWx1ZSIs
ICJiYXIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZGV0YWNoZWRBdHRyLnRleHRDb250ZW50
IiwgImJhciIpOworc2hvdWxkQmVOdWxsKCJkZXRhY2hlZEF0dHIuZmlyc3RDaGlsZCIpOworc2hv
dWxkQmVOdWxsKCJkZXRhY2hlZEF0dHIubGFzdENoaWxkIik7CitzaG91bGRCZUZhbHNlKCJkZXRh
Y2hlZEF0dHIuaGFzQ2hpbGROb2RlcygpIik7CitzaG91bGRCZSgiZGV0YWNoZWRBdHRyLmNoaWxk
Tm9kZXMubGVuZ3RoIiAsICIwIik7CisKK2RlYnVnKCIiKTsKK2V2YWxBbmRMb2coImRldGFjaGVk
QXR0ci5ub2RlVmFsdWUgPSAnYmFyMiciKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZGV0YWNo
ZWRBdHRyLnZhbHVlIiwgImJhcjIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZGV0YWNoZWRB
dHRyLm5vZGVWYWx1ZSIsICJiYXIyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRldGFjaGVk
QXR0ci50ZXh0Q29udGVudCIsICJiYXIyIik7CisKK2RlYnVnKCIiKTsKK2V2YWxBbmRMb2coImRl
dGFjaGVkQXR0ci50ZXh0Q29udGVudCA9ICdiYXIzJyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkZXRhY2hlZEF0dHIudmFsdWUiLCAiYmFyMyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
ZXRhY2hlZEF0dHIubm9kZVZhbHVlIiwgImJhcjMiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZGV0YWNoZWRBdHRyLnRleHRDb250ZW50IiwgImJhcjMiKTsKKworZGVidWcoIiIpOworZXZhbEFu
ZExvZygiZGV0YWNoZWRBdHRyLnZhbHVlID0gbnVsbCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkZXRhY2hlZEF0dHIudmFsdWUiLCAibnVsbCIpOworCitkZWJ1ZygiIik7CitldmFsQW5kTG9n
KCJkZXRhY2hlZEF0dHIubm9kZVZhbHVlID0gbnVsbCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkZXRhY2hlZEF0dHIudmFsdWUiLCAiIik7CisKK2RlYnVnKCIiKTsKK2V2YWxBbmRMb2coImRl
dGFjaGVkQXR0ci50ZXh0Q29udGVudCA9IG51bGwiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZGV0YWNoZWRBdHRyLnZhbHVlIiwgIiIpOworCitkZWJ1ZygiIik7CitldmFsQW5kTG9nKCJkZXRh
Y2hlZEF0dHIudmFsdWUgPSAnYmFyJyIpOworZXZhbEFuZExvZygiZG9jdW1lbnQuYm9keS5zZXRB
dHRyaWJ1dGVOb2RlKGRldGFjaGVkQXR0cikiKTsKK2NvbnN0IGZvb0F0dHIgPSBkZXRhY2hlZEF0
dHI7CitkZXRhY2hlZEF0dHIgPSBudWxsOworc2hvdWxkQmUoImZvb0F0dHIub3duZXJFbGVtZW50
IiwgImRvY3VtZW50LmJvZHkiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0
ZU5vZGUoJ2ZvbycpIiwgImZvb0F0dHIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1l
bnQuYm9keS5nZXRBdHRyaWJ1dGUoJ2ZvbycpIiwgImJhciIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJmb29BdHRyLnZhbHVlIiwgImJhciIpOworc2hvdWxkQmUoImRvY3VtZW50LmJvZHkuYXR0
cmlidXRlcy5mb28iLCAiZm9vQXR0ciIpOworc2hvdWxkQmUoImRvY3VtZW50LmJvZHkuYXR0cmli
dXRlc1snZm9vJ10iLCAiZm9vQXR0ciIpOworc2hvdWxkQmUoImRvY3VtZW50LmJvZHkuYXR0cmli
dXRlc1sxXSIsICJmb29BdHRyIik7CitzaG91bGRCZU51bGwoImZvb0F0dHIuZmlyc3RDaGlsZCIp
Oworc2hvdWxkQmVOdWxsKCJmb29BdHRyLmxhc3RDaGlsZCIpOworc2hvdWxkQmVGYWxzZSgiZm9v
QXR0ci5oYXNDaGlsZE5vZGVzKCkiKTsKK3Nob3VsZEJlKCJmb29BdHRyLmNoaWxkTm9kZXMubGVu
Z3RoIiAsICIwIik7CitzaG91bGRUaHJvd0Vycm9yTmFtZSgiZm9vQXR0ci5hcHBlbmRDaGlsZCh0
ZXh0KSIsICJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiKTsKK3Nob3VsZFRocm93RXJyb3JOYW1lKCJm
b29BdHRyLmluc2VydEJlZm9yZSh0ZXh0LCBudWxsKSIsICJIaWVyYXJjaHlSZXF1ZXN0RXJyb3Ii
KTsKKworZGVidWcoIiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9BdHRyL2NoYW5nZS1pZC12aWEtYXR0ci1ub2RlLXZh
bHVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hhbmdlLWlkLXZp
YS1hdHRyLW5vZGUtdmFsdWUtZXhwZWN0ZWQudHh0CmluZGV4IDg1MWI1OGRiZWQzZWNmOTk4NzRi
MmE5Y2Q5YjAzZjk2NmU5NzdkOTAuLmQ5ODI5M2E3ZjQ0MmFjODNlODA1NWM4Nzg4MjliNGM2OGUw
NzkxN2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hhbmdlLWlkLXZp
YS1hdHRyLW5vZGUtdmFsdWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0F0dHIvY2hhbmdlLWlkLXZpYS1hdHRyLW5vZGUtdmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0zNSwx
MjIgKzM1LDM1IEBAIFBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImYiKSBpcyBkb2N1bWVu
dC5ib2R5CiBQQVNTIGRvY3VtZW50LmJvZHkuaWQgaXMgImYiCiBQQVNTIGRvY3VtZW50LmJvZHku
Z2V0QXR0cmlidXRlKCJpZCIpIGlzICJmIgogUEFTUyBhdHRyTm9kZS50ZXh0Q29udGVudCBpcyAi
ZiIKLVBBU1MgYXR0ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQotCi03LiBBdHRyLnJlcGxh
Y2VDaGlsZCgpLgotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZiIpIGlzIG51bGwKLVBB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImciKSBpcyBkb2N1bWVudC5ib2R5Ci1QQVNTIGRv
Y3VtZW50LmJvZHkuaWQgaXMgImciCi1QQVNTIGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJp
ZCIpIGlzICJnIgotUEFTUyBhdHRyTm9kZS50ZXh0Q29udGVudCBpcyAiZyIKLVBBU1MgYXR0ck5v
ZGUuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQotCi04LiBBdHRyLmluc2VydEJlZm9yZSgpLgotUEFT
UyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZyIpIGlzIG51bGwKLVBBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIjBnIikgaXMgZG9jdW1lbnQuYm9keQotUEFTUyBkb2N1bWVudC5ib2R5Lmlk
IGlzICIwZyIKLVBBU1MgZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjBnIgot
UEFTUyBhdHRyTm9kZS50ZXh0Q29udGVudCBpcyAiMGciCi1QQVNTIGF0dHJOb2RlLmNoaWxkTm9k
ZXMubGVuZ3RoIGlzIDIKLQotOS4gYXR0ci5hcHBlbmRDaGlsZCgpLgotUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiMGciKSBpcyBudWxsCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCIwZzIiKSBpcyBkb2N1bWVudC5ib2R5Ci1QQVNTIGRvY3VtZW50LmJvZHkuaWQgaXMgIjBnMiIK
LVBBU1MgZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjBnMiIKLVBBU1MgYXR0
ck5vZGUudGV4dENvbnRlbnQgaXMgIjBnMiIKLVBBU1MgYXR0ck5vZGUuY2hpbGROb2Rlcy5sZW5n
dGggaXMgMwotCi0xMC4gQXR0ci5yZW1vdmVDaGlsZCgpCi1QQVNTIGRvY3VtZW50LmJvZHkuZ2V0
QXR0cmlidXRlTm9kZSgiaWQiKS5jaGlsZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJoIikgaXMgbnVsbAotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiIikgaXMgbnVsbAotUEFTUyBkb2N1bWVudC5ib2R5LmlkIGlzICIiCi1QQVNTIGRvY3VtZW50
LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIiCi1QQVNTIGRvY3VtZW50LmJvZHkuZ2V0QXR0
cmlidXRlTm9kZSgiaWQiKS50ZXh0Q29udGVudCBpcyAiIgotCi0xMS4gQ2hhbmdpbmcgVGV4dC5u
b2RlVmFsdWUuCi1QQVNTIGF0dHJOb2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlIGlzICJpIgotUEFT
UyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaSIpIGlzIGRvY3VtZW50LmJvZHkKLVBBU1MgZG9j
dW1lbnQuYm9keS5pZCBpcyAiaSIKLVBBU1MgZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlk
IikgaXMgImkiCi1QQVNTIGF0dHJOb2RlLnRleHRDb250ZW50IGlzICJpIgotUEFTUyBhdHRyTm9k
ZS5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCi0KLTEyLiBDaG5hZ2luZyBBdHRyLnRleHRDb250ZW50
LgorUEFTUyBhdHRyTm9kZS5jaGlsZE5vZGVzLmxlbmd0aCBpcyAwCisKKzcuIENoYW5naW5nIEF0
dHIudGV4dENvbnRlbnQuCiBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpIikgaXMgbnVs
bAogUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGkiKSBpcyBkb2N1bWVudC5ib2R5CiBQ
QVNTIGRvY3VtZW50LmJvZHkuaWQgaXMgImhpIgogUEFTUyBkb2N1bWVudC5ib2R5LmdldEF0dHJp
YnV0ZSgiaWQiKSBpcyAiaGkiCiBQQVNTIGF0dHJOb2RlLnRleHRDb250ZW50IGlzICJoaSIKLVBB
U1MgYXR0ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBhdHRyTm9kZS5jaGlsZE5v
ZGVzLmxlbmd0aCBpcyAwCiAKLTEzLiBUZXh0LnNwbGl0VGV4dCgpLgorOC4gTm9kZS5ub3JtYWxp
emUoKSwgam9pbmluZyB0ZXh0IG5vZGVzLgogUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aGkiKSBpcyBkb2N1bWVudC5ib2R5CiBQQVNTIGRvY3VtZW50LmJvZHkuaWQgaXMgImhpIgogUEFT
UyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiaGkiCiBQQVNTIGRvY3VtZW50
LmJvZHkuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS50ZXh0Q29udGVudCBpcyAiaGkiCi1QQVNTIGRv
Y3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS5jaGlsZE5vZGVzLmxlbmd0aCBpcyAy
CitQQVNTIGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS5jaGlsZE5vZGVzLmxl
bmd0aCBpcyAwCiAKLTE0LiBOb2RlLm5vcm1hbGl6ZSgpLCBqb2luaW5nIHRleHQgbm9kZXMuCi1Q
QVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJoaSIpIGlzIGRvY3VtZW50LmJvZHkKLVBBU1Mg
ZG9jdW1lbnQuYm9keS5pZCBpcyAiaGkiCi1QQVNTIGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRl
KCJpZCIpIGlzICJoaSIKLVBBU1MgZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIp
LnRleHRDb250ZW50IGlzICJoaSIKLVBBU1MgZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2Rl
KCJpZCIpLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLQotMTYuIENoYW5naW5nIFRleHQuZGF0YS4K
LVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImoiKSBpcyBudWxsCi1QQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJrIikgaXMgZG9jdW1lbnQuYm9keQotUEFTUyBkb2N1bWVudC5ib2R5
LmlkIGlzICJrIgotUEFTUyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiayIK
LVBBU1MgYXR0ck5vZGUudGV4dENvbnRlbnQgaXMgImsiCi1QQVNTIGF0dHJOb2RlLmNoaWxkTm9k
ZXMubGVuZ3RoIGlzIDEKLQotMTcuIENoYW5naW5nIHRleHQgY2hpbGQgd2l0aCBhcHBlbmREYXRh
KCkuCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrIikgaXMgbnVsbAotUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgia2wiKSBpcyBkb2N1bWVudC5ib2R5Ci1QQVNTIGRvY3VtZW50
LmJvZHkuaWQgaXMgImtsIgotUEFTUyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKSBp
cyAia2wiCi1QQVNTIGF0dHJOb2RlLnRleHRDb250ZW50IGlzICJrbCIKLVBBU1MgYXR0ck5vZGUu
Y2hpbGROb2Rlcy5sZW5ndGggaXMgMQotCi0xOC4gQ2hhbmdpbmcgdGV4dCBjaGlsZCB3aXRoIGlu
c2VydERhdGEoKS4KLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtsIikgaXMgbnVsbAot
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiazFsIikgaXMgZG9jdW1lbnQuYm9keQotUEFT
UyBkb2N1bWVudC5ib2R5LmlkIGlzICJrMWwiCi1QQVNTIGRvY3VtZW50LmJvZHkuZ2V0QXR0cmli
dXRlKCJpZCIpIGlzICJrMWwiCi1QQVNTIGF0dHJOb2RlLnRleHRDb250ZW50IGlzICJrMWwiCi1Q
QVNTIGF0dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLQotMTkuIENoYW5naW5nIHRleHQg
Y2hpbGQgd2l0aCBkZWxldGVEYXRhKCkuCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJr
MWwiKSBpcyBudWxsCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsIikgaXMgZG9jdW1l
bnQuYm9keQotUEFTUyBkb2N1bWVudC5ib2R5LmlkIGlzICJsIgotUEFTUyBkb2N1bWVudC5ib2R5
LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAibCIKLVBBU1MgYXR0ck5vZGUudGV4dENvbnRlbnQgaXMg
ImwiCi1QQVNTIGF0dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLQotMjAuIENoYW5naW5n
IHRleHQgY2hpbGQgd2l0aCByZXBsYWNlRGF0YSgpLgotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibCIpIGlzIG51bGwKLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1uIikgaXMg
ZG9jdW1lbnQuYm9keQotUEFTUyBkb2N1bWVudC5ib2R5LmlkIGlzICJtbiIKLVBBU1MgZG9jdW1l
bnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIm1uIgotUEFTUyBhdHRyTm9kZS50ZXh0Q29u
dGVudCBpcyAibW4iCi1QQVNTIGF0dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLQotMjEu
IFJlbW92ZSBhbiBBdHRyIG5vZGUuCis5LiBSZW1vdmUgYW4gQXR0ciBub2RlLgogUEFTUyBkb2N1
bWVudC5ib2R5LmlkIGlzICIiCiBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtbiIpIGlz
IG51bGwKIFBBU1MgZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIikgaXMgbnVsbAogUEFT
UyBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZU5vZGUoImlkIikgaXMgbnVsbAogCi0yMi4gQWRk
IGFuIEF0dHIgbm9kZS4KKzEwLiBBZGQgYW4gQXR0ciBub2RlLgogUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibyIpIGlzIGRvY3VtZW50LmJvZHkKIFBBU1MgZG9jdW1lbnQuYm9keS5pZCBp
cyAibyIKIFBBU1MgZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIm8iCiAKLTIz
LiBBZGQgYW4gQXR0ciBub2RlIG92ZXIgYW4gZXhpc3Rpbmcgb25lLgorMTEuIEFkZCBhbiBBdHRy
IG5vZGUgb3ZlciBhbiBleGlzdGluZyBvbmUuCiBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJvIikgaXMgbnVsbAogUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicCIpIGlzIGRvY3Vt
ZW50LmJvZHkKIFBBU1MgZG9jdW1lbnQuYm9keS5pZCBpcyAicCIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hhbmdlLWlkLXZpYS1hdHRyLW5vZGUtdmFsdWUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hhbmdlLWlkLXZpYS1hdHRyLW5vZGUtdmFsdWUu
aHRtbAppbmRleCBmMDA4NjM2MTQ1Nzc1NDViMjFjNjk4MjhkYTczMjk4YzJjMmE5Yzk4Li5hYzk4
MmIwZWU1YWMzYmUyZGU1ZWNhMDNiMTIwMDFlZGIyODU0OTlhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9BdHRyL2NoYW5nZS1pZC12aWEtYXR0ci1ub2RlLXZhbHVlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jaGFuZ2UtaWQtdmlhLWF0dHItbm9kZS12YWx1
ZS5odG1sCkBAIC00NiwxNDYgKzQ2LDMzIEBAIHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZiIpJywgJ2RvY3VtZW50LmJvZHknKTsKIHNob3VsZEJlKCdkb2N1bWVudC5ib2R5Lmlk
JywgJyJmIicpOwogc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpJywg
JyJmIicpOwogc2hvdWxkQmUoJ2F0dHJOb2RlLnRleHRDb250ZW50JywgJyJmIicpOwotc2hvdWxk
QmUoJ2F0dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoJywgJzEnKTsKK3Nob3VsZEJlKCdhdHRyTm9k
ZS5jaGlsZE5vZGVzLmxlbmd0aCcsICcwJyk7CiAKLS8vIEZpcmVmb3ggZG9lc24ndCBzdXBwb3J0
IHRoZXNlIGZvciBBdHRyIG5vZGVzLgotZGVidWcoIlxuNy4gQXR0ci5yZXBsYWNlQ2hpbGQoKS4i
KTsKLXRyeSB7Ci0gICAgYXR0ck5vZGUucmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJnIiksIGF0dHJOb2RlLmZpcnN0Q2hpbGQpOwotICAgIHNob3VsZEJlKCdkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZiIpJywgJ251bGwnKTsKLSAgICBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImciKScsICdkb2N1bWVudC5ib2R5Jyk7Ci0gICAgc2hvdWxkQmUoJ2RvY3Vt
ZW50LmJvZHkuaWQnLCAnImciJyk7Ci0gICAgc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuZ2V0QXR0
cmlidXRlKCJpZCIpJywgJyJnIicpOwotICAgIHNob3VsZEJlKCdhdHRyTm9kZS50ZXh0Q29udGVu
dCcsICciZyInKTsKLSAgICBzaG91bGRCZSgnYXR0ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGgnLCAn
MScpOwotfSBjYXRjaCAoZXgpIHsKLSAgICBkZWJ1ZyhleCk7Ci19Ci0KLWRlYnVnKCJcbjguIEF0
dHIuaW5zZXJ0QmVmb3JlKCkuIik7Ci10cnkgewotICAgIGF0dHJOb2RlLmluc2VydEJlZm9yZShk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiMCIpLCBhdHRyTm9kZS5maXJzdENoaWxkKTsKLSAgICBz
aG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImciKScsICdudWxsJyk7Ci0gICAgc2hv
dWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIwZyIpJywgJ2RvY3VtZW50LmJvZHknKTsK
LSAgICBzaG91bGRCZSgnZG9jdW1lbnQuYm9keS5pZCcsICciMGciJyk7Ci0gICAgc2hvdWxkQmUo
J2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpJywgJyIwZyInKTsKLSAgICBzaG91bGRC
ZSgnYXR0ck5vZGUudGV4dENvbnRlbnQnLCAnIjBnIicpOwotICAgIHNob3VsZEJlKCdhdHRyTm9k
ZS5jaGlsZE5vZGVzLmxlbmd0aCcsICcyJyk7Ci19IGNhdGNoIChleCkgewotICAgIGRlYnVnKGV4
KTsKLX0KLQotZGVidWcoIlxuOS4gYXR0ci5hcHBlbmRDaGlsZCgpLiIpOwotdHJ5IHsKLSAgICBh
dHRyTm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiMiIpKTsKLSAgICBz
aG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIjBnIiknLCAnbnVsbCcpOwotICAgIHNo
b3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiMGcyIiknLCAnZG9jdW1lbnQuYm9keScp
OwotICAgIHNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmlkJywgJyIwZzIiJyk7Ci0gICAgc2hvdWxk
QmUoJ2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpJywgJyIwZzIiJyk7Ci0gICAgc2hv
dWxkQmUoJ2F0dHJOb2RlLnRleHRDb250ZW50JywgJyIwZzIiJyk7Ci0gICAgc2hvdWxkQmUoJ2F0
dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoJywgJzMnKTsKLX0gY2F0Y2ggKGV4KSB7Ci0gICAgZGVi
dWcoZXgpOwotfQotCi1kZWJ1ZygiXG4xMC4gQXR0ci5yZW1vdmVDaGlsZCgpIik7Ci1hdHRyTm9k
ZS5ub2RlVmFsdWUgPSAiaCI7Ci1hdHRyTm9kZS5yZW1vdmVDaGlsZChhdHRyTm9kZS5maXJzdENo
aWxkKTsKLXNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZU5vZGUoImlkIikuY2hp
bGROb2Rlcy5sZW5ndGgnLCAnMCcpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJoIiknLCAnbnVsbCcpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIiKScs
ICdudWxsJyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5pZCcsICciIicpOwotc2hvdWxkQmUo
J2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpJywgJyIiJyk7Ci1zaG91bGRCZSgnZG9j
dW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLnRleHRDb250ZW50JywgJyIiJyk7Ci0K
LWRlYnVnKCJcbjExLiBDaGFuZ2luZyBUZXh0Lm5vZGVWYWx1ZS4iKTsKLWF0dHJOb2RlLm5vZGVW
YWx1ZSA9ICJoIjsKLWF0dHJOb2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlID0gImkiOwotc2hvdWxk
QmUoJ2F0dHJOb2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlJywgJyJpIicpOwotc2hvdWxkQmUoJ2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJpIiknLCAnZG9jdW1lbnQuYm9keScpOwotc2hvdWxkQmUo
J2RvY3VtZW50LmJvZHkuaWQnLCAnImkiJyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5nZXRB
dHRyaWJ1dGUoImlkIiknLCAnImkiJyk7Ci1zaG91bGRCZSgnYXR0ck5vZGUudGV4dENvbnRlbnQn
LCAnImkiJyk7Ci1zaG91bGRCZSgnYXR0ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGgnLCAnMScpOwot
Ci1kZWJ1ZygiXG4xMi4gQ2huYWdpbmcgQXR0ci50ZXh0Q29udGVudC4iKTsKK2RlYnVnKCJcbjcu
IENoYW5naW5nIEF0dHIudGV4dENvbnRlbnQuIik7CiBhdHRyTm9kZS50ZXh0Q29udGVudCA9ICJo
aSI7CiBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImkiKScsICdudWxsJyk7CiBz
aG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhpIiknLCAnZG9jdW1lbnQuYm9keScp
Owogc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuaWQnLCAnImhpIicpOwogc2hvdWxkQmUoJ2RvY3Vt
ZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpJywgJyJoaSInKTsKIHNob3VsZEJlKCdhdHRyTm9k
ZS50ZXh0Q29udGVudCcsICciaGkiJyk7Ci1zaG91bGRCZSgnYXR0ck5vZGUuY2hpbGROb2Rlcy5s
ZW5ndGgnLCAnMScpOwotCi1kZWJ1ZygiXG4xMy4gVGV4dC5zcGxpdFRleHQoKS4iKTsKLWF0dHJO
b2RlLmZpcnN0Q2hpbGQuc3BsaXRUZXh0KDEpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJoaSIpJywgJ2RvY3VtZW50LmJvZHknKTsKLXNob3VsZEJlKCdkb2N1bWVudC5ib2R5
LmlkJywgJyJoaSInKTsKLXNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQi
KScsICciaGkiJyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2RlKCJp
ZCIpLnRleHRDb250ZW50JywgJyJoaSInKTsKLXNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0
dHJpYnV0ZU5vZGUoImlkIikuY2hpbGROb2Rlcy5sZW5ndGgnLCAnMicpOworc2hvdWxkQmUoJ2F0
dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoJywgJzAnKTsKIAotZGVidWcoIlxuMTQuIE5vZGUubm9y
bWFsaXplKCksIGpvaW5pbmcgdGV4dCBub2Rlcy4iKTsKK2RlYnVnKCJcbjguIE5vZGUubm9ybWFs
aXplKCksIGpvaW5pbmcgdGV4dCBub2Rlcy4iKTsKIGF0dHJOb2RlLm5vcm1hbGl6ZSgpOwogc2hv
dWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJoaSIpJywgJ2RvY3VtZW50LmJvZHknKTsK
IHNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmlkJywgJyJoaSInKTsKIHNob3VsZEJlKCdkb2N1bWVu
dC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKScsICciaGkiJyk7CiBzaG91bGRCZSgnZG9jdW1lbnQu
Ym9keS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLnRleHRDb250ZW50JywgJyJoaSInKTsKLXNob3Vs
ZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZU5vZGUoImlkIikuY2hpbGROb2Rlcy5sZW5n
dGgnLCAnMScpOwotCi1kZWJ1ZygiXG4xNi4gQ2hhbmdpbmcgVGV4dC5kYXRhLiIpOwotYXR0ck5v
ZGUuZmlyc3RDaGlsZC5kYXRhID0gImsiOwotc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJqIiknLCAnbnVsbCcpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJr
IiknLCAnZG9jdW1lbnQuYm9keScpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuaWQnLCAnImsi
Jyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIiknLCAnImsiJyk7
Ci1zaG91bGRCZSgnYXR0ck5vZGUudGV4dENvbnRlbnQnLCAnImsiJyk7Ci1zaG91bGRCZSgnYXR0
ck5vZGUuY2hpbGROb2Rlcy5sZW5ndGgnLCAnMScpOwotCi1kZWJ1ZygiXG4xNy4gQ2hhbmdpbmcg
dGV4dCBjaGlsZCB3aXRoIGFwcGVuZERhdGEoKS4iKTsKLWF0dHJOb2RlLmZpcnN0Q2hpbGQuYXBw
ZW5kRGF0YSgibCIpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrIiknLCAn
bnVsbCcpOwotc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrbCIpJywgJ2RvY3Vt
ZW50LmJvZHknKTsKLXNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmlkJywgJyJrbCInKTsKLXNob3Vs
ZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiaWQiKScsICcia2wiJyk7Ci1zaG91bGRC
ZSgnYXR0ck5vZGUudGV4dENvbnRlbnQnLCAnImtsIicpOwotc2hvdWxkQmUoJ2F0dHJOb2RlLmNo
aWxkTm9kZXMubGVuZ3RoJywgJzEnKTsKLQotZGVidWcoIlxuMTguIENoYW5naW5nIHRleHQgY2hp
bGQgd2l0aCBpbnNlcnREYXRhKCkuIik7Ci1hdHRyTm9kZS5maXJzdENoaWxkLmluc2VydERhdGEo
MSwgIjEiKTsKLXNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgia2wiKScsICdudWxs
Jyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImsxbCIpJywgJ2RvY3VtZW50
LmJvZHknKTsKLXNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmlkJywgJyJrMWwiJyk7Ci1zaG91bGRC
ZSgnZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIiknLCAnImsxbCInKTsKLXNob3VsZEJl
KCdhdHRyTm9kZS50ZXh0Q29udGVudCcsICciazFsIicpOwotc2hvdWxkQmUoJ2F0dHJOb2RlLmNo
aWxkTm9kZXMubGVuZ3RoJywgJzEnKTsKLQotZGVidWcoIlxuMTkuIENoYW5naW5nIHRleHQgY2hp
bGQgd2l0aCBkZWxldGVEYXRhKCkuIik7Ci1hdHRyTm9kZS5maXJzdENoaWxkLmRlbGV0ZURhdGEo
MCwgMik7Ci1zaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImsxbCIpJywgJ251bGwn
KTsKLXNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibCIpJywgJ2RvY3VtZW50LmJv
ZHknKTsKLXNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmlkJywgJyJsIicpOwotc2hvdWxkQmUoJ2Rv
Y3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJpZCIpJywgJyJsIicpOwotc2hvdWxkQmUoJ2F0dHJO
b2RlLnRleHRDb250ZW50JywgJyJsIicpOwotc2hvdWxkQmUoJ2F0dHJOb2RlLmNoaWxkTm9kZXMu
bGVuZ3RoJywgJzEnKTsKLQotZGVidWcoIlxuMjAuIENoYW5naW5nIHRleHQgY2hpbGQgd2l0aCBy
ZXBsYWNlRGF0YSgpLiIpOwotYXR0ck5vZGUuZmlyc3RDaGlsZC5yZXBsYWNlRGF0YSgwLCAxLCAi
bW4iKTsKLXNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibCIpJywgJ251bGwnKTsK
LXNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW4iKScsICdkb2N1bWVudC5ib2R5
Jyk7Ci1zaG91bGRCZSgnZG9jdW1lbnQuYm9keS5pZCcsICcibW4iJyk7Ci1zaG91bGRCZSgnZG9j
dW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImlkIiknLCAnIm1uIicpOwotc2hvdWxkQmUoJ2F0dHJO
b2RlLnRleHRDb250ZW50JywgJyJtbiInKTsKLXNob3VsZEJlKCdhdHRyTm9kZS5jaGlsZE5vZGVz
Lmxlbmd0aCcsICcxJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGVOb2Rl
KCJpZCIpLmNoaWxkTm9kZXMubGVuZ3RoJywgJzAnKTsKIAotZGVidWcoIlxuMjEuIFJlbW92ZSBh
biBBdHRyIG5vZGUuIik7CitkZWJ1ZygiXG45LiBSZW1vdmUgYW4gQXR0ciBub2RlLiIpOwogZG9j
dW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGVOb2RlKGF0dHJOb2RlKTsKIHNob3VsZEJlKCdkb2N1
bWVudC5ib2R5LmlkJywgJyIiJyk7CiBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im1uIiknLCAnbnVsbCcpOwogc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJp
ZCIpJywgJ251bGwnKTsKIHNob3VsZEJlKCdkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZU5vZGUo
ImlkIiknLCAnbnVsbCcpOwogCi1kZWJ1ZygiXG4yMi4gQWRkIGFuIEF0dHIgbm9kZS4iKTsKK2Rl
YnVnKCJcbjEwLiBBZGQgYW4gQXR0ciBub2RlLiIpOwogdmFyIGF0dHJOb2RlID0gZG9jdW1lbnQu
Y3JlYXRlQXR0cmlidXRlKCJpZCIpOwogYXR0ck5vZGUudmFsdWUgPSAibyI7CiBkb2N1bWVudC5i
b2R5LnNldEF0dHJpYnV0ZU5vZGUoYXR0ck5vZGUpOwpAQCAtMTkzLDcgKzgwLDcgQEAgc2hvdWxk
QmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvIiknLCAnZG9jdW1lbnQuYm9keScpOwogc2hv
dWxkQmUoJ2RvY3VtZW50LmJvZHkuaWQnLCAnIm8iJyk7CiBzaG91bGRCZSgnZG9jdW1lbnQuYm9k
eS5nZXRBdHRyaWJ1dGUoImlkIiknLCAnIm8iJyk7CiAKLWRlYnVnKCJcbjIzLiBBZGQgYW4gQXR0
ciBub2RlIG92ZXIgYW4gZXhpc3Rpbmcgb25lLiIpOworZGVidWcoIlxuMTEuIEFkZCBhbiBBdHRy
IG5vZGUgb3ZlciBhbiBleGlzdGluZyBvbmUuIik7CiB2YXIgYXR0ck5vZGUgPSBkb2N1bWVudC5j
cmVhdGVBdHRyaWJ1dGUoImlkIik7CiBhdHRyTm9kZS52YWx1ZSA9ICJwIjsKIGRvY3VtZW50LmJv
ZHkuc2V0QXR0cmlidXRlTm9kZShhdHRyTm9kZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9BdHRyL2NoaWxkLW5vZGVzLWNhY2hlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0F0dHIvY2hpbGQtbm9kZXMtY2FjaGUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5OTc2YjEyMDkyMTBjYzY1MmYyNTRiODNjZTQ3NTM2MzE0Zjdi
YmY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hpbGQtbm9kZXMtY2FjaGUtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1QQVNTCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1jYWNoZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1jYWNoZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwZDM0OGNkOTVmNDU0YjBkYzE2YTc1NzMzNGEyYjc4ZWVlMWNiMmRjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0F0dHIvY2hpbGQtbm9kZXMtY2FjaGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICsw
LDAgQEAKLTxib2R5IG9ubG9hZD0idGVzdCgpIj4KLTxwPlJ1bm5pbmcgdGVzdC4uLjwvcD4KLTx0
ZXh0YXJlYSBpZD10IHJvd3M9MjA+dGV4dGFyZWE8L3RleHRhcmVhPgotPHNjcmlwdD4KLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiBnYygpCi17Ci0gICAgaWYg
KHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVj
dCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2Ug
Z2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZv
cmUgYSBjb2xsZWN0KQotICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidCIpOwotICAgIHZhciBub2RlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
IikuZ2V0QXR0cmlidXRlTm9kZSgncm93cycpLmNoaWxkTm9kZXM7Ci0gICAgbm9kZXNbMF07IC8v
IFByaW1lIHRoZSBjaGlsZCBub2RlIGNhY2hlLgotICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQiKSk7Ci0gICAgZWxlbS5nZXRBdHRyaWJ1dGVO
b2RlKCdyb3dzJykucmVtb3ZlQ2hpbGQobm9kZXNbMF0pOwotICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGdjKCk7Ci0gICAgICAgIGdjKCk7Ci0gICAgICAgIGdjKCk7Ci0gICAg
ICAgIHRyeSB7IG5vZGVzWzBdLnRleHRDb250ZW50IH0gY2F0Y2ggKGV4KSB7IH0KLQotICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgicCIpWzBdLmlubmVySFRNTCA9ICJQQVNT
IgotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICB9LCAwKTsKLX0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1sZW5ndGgtY2FjaGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rlcy1sZW5ndGgtY2FjaGUt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjUzZmExMDA3ZGE3
ZDk3N2M1NGRjMGZkNjAxYjI0OTVlYjg3N2VmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvY2hpbGQtbm9kZXMt
bGVuZ3RoLWNhY2hlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAot
VGVzdCBmb3IgYnVnIDE5NzU5OiBDaGlsZE5vZGVMaXN0IGZvciBhbiBhdHRyaWJ1dGUgbm9kZSBp
cyBub3QgcHJvcGVybHkgaW52YWxpZGF0ZWQgYWZ0ZXIgYXBwZW5kaW5nIGEgY2hpbGQuCi0KLVBh
c3NlZCEhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9BdHRyL2NoaWxkLW5vZGVz
LWxlbmd0aC1jYWNoZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9jaGlsZC1ub2Rl
cy1sZW5ndGgtY2FjaGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYzZWY1
YTVlMWFmN2EzMjUwNjgwMjYwMzJmOWMyNjU0ZDUwNjZmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9BdHRyL2NoaWxk
LW5vZGVzLWxlbmd0aC1jYWNoZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0KLWZ1bmN0aW9uIG9uTG9hZCgpCi17Ci0gICAgdmFyIHRo
ZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVEaXYiKTsKLSAgICB2YXIgdGhlQXR0
cnMgPSB0aGVEaXYuYXR0cmlidXRlczsKLQotICAgIHZhciBuYW1lQXR0ciA9IHRoZUF0dHJzLmdl
dE5hbWVkSXRlbSgibmFtZSIpOwotICAgIHZhciBuYW1lQXR0ckNoaWxkTm9kZXMgPSBuYW1lQXR0
ci5jaGlsZE5vZGVzOwotICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCJ0ZXJkYXkiKTsKLSAgICB2YXIgdW51c2VkID0gbmFtZUF0dHJDaGlsZE5vZGVzLmxlbmd0aDsK
LSAgICBuYW1lQXR0ci5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7Ci0KLSAgICB2YXIgbmFtZTJBdHRy
ID0gdGhlQXR0cnMuZ2V0TmFtZWRJdGVtKCJuYW1lMiIpOwotICAgIHZhciBuYW1lMkF0dHJDaGls
ZE5vZGVzID0gbmFtZTJBdHRyLmNoaWxkTm9kZXM7Ci0gICAgdmFyIHRleHROb2RlMiA9IGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJ0ZXJkYXkiKTsKLSAgICBuYW1lMkF0dHIuYXBwZW5kQ2hpbGQo
dGV4dE5vZGUyKTsKLSAgICAgICAgCi0gICAgaWYgKG5hbWVBdHRyQ2hpbGROb2Rlcy5sZW5ndGgg
IT0gbmFtZTJBdHRyQ2hpbGROb2Rlcy5sZW5ndGgpCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiRmFpbGVkOiBuYW1lQXR0ckNoaWxkTm9kZXMu
bGVuZ3RoPSIgKyBuYW1lQXR0ckNoaWxkTm9kZXMubGVuZ3RoICsgIiwgbmFtZTJBdHRyQ2hpbGRO
b2Rlcy5sZW5ndGg9IiArIG5hbWUyQXR0ckNoaWxkTm9kZXMubGVuZ3RoOwotICAgIGVsc2UKLSAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJQYXNz
ZWQhISI7Ci0KLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0aGVEaXYiKSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KLTxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTc1OSI+YnVnIDE5NzU5PC9hPjoKLUNoaWxkTm9kZUxpc3QgZm9y
IGFuIGF0dHJpYnV0ZSBub2RlIGlzIG5vdCBwcm9wZXJseSBpbnZhbGlkYXRlZCBhZnRlciBhcHBl
bmRpbmcgYSBjaGlsZC48L3A+Ci08ZGl2IGlkPSJ0aGVEaXYiIG5hbWU9IlllcyIgbmFtZTI9Illl
cyI+SGVsbG88L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+VGVzdGluZy4uLjwvZGl2PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9pbnZhbGlk
YXRlLW5vZGVsaXN0LWFmdGVyLWF0dHItc2V0dmFsdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vQXR0ci9pbnZhbGlkYXRlLW5vZGVsaXN0LWFmdGVyLWF0dHItc2V0dmFsdWUt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDRlZWI1NGMxMDY1
MzYxMDA3MTExNzlmMGZiZjNiYWY5NGMxM2I3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvaW52YWxpZGF0ZS1u
b2RlbGlzdC1hZnRlci1hdHRyLXNldHZhbHVlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDEyICswLDAgQEAKLVRoaXMgdGVzdHMgc2V0dGluZyB0aGUgdmFsdWUgb2YgYW4gYXR0cmli
dXRlIG5vZGUgYWZ0ZXIgY2FjaGluZyBjaGlsZE5vZGVzIG9mIHRoZSBhdHRyaWJ1dGUgbm9kZS4K
LVRoZSBjYWNoZSBzaG91bGQgYmUgY2xlYXJlZCBhbmQgY2hpbGROb2Rlc1swXS5kYXRhIHNob3Vs
ZCByZXR1cm4gdGhlIG5ldyB2YWx1ZS4KLVlvdSBzaG91bGQgc2VlIFBBU1MgYmVsb3c6Ci0KLVBB
U1MgbmFtZUF0dHJOb2RlLmNoaWxkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1MgbmFtZUF0dHJOb2Rl
LmNoaWxkTm9kZXNbMF0gaXMgb2xkVmFsdWUKLVBBU1MgbmFtZUF0dHJOb2RlLmNoaWxkTm9kZXNb
MF0uZGF0YSBpcyAib2xkTmFtZSIKLQotUEFTUyBuYW1lQXR0ck5vZGUudmFsdWUgPSAnbmV3TmFt
ZSc7IG5hbWVBdHRyTm9kZS52YWx1ZSBpcyAibmV3TmFtZSIKLVBBU1MgbmFtZUF0dHJOb2RlLmNo
aWxkTm9kZXNbMF0gaXMgbm90IG9sZFZhbHVlCi1QQVNTIG5hbWVBdHRyTm9kZS5jaGlsZE5vZGVz
WzBdLmRhdGEgaXMgIm5ld05hbWUiCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0F0dHIvaW52YWxpZGF0ZS1ub2RlbGlzdC1hZnRlci1hdHRyLXNldHZhbHVlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9BdHRyL2ludmFsaWRhdGUtbm9kZWxpc3QtYWZ0ZXItYXR0ci1zZXR2
YWx1ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzNkNmM2OGUyZjBmMzkx
ZWYzNTUzN2RmYzkyMjc5N2VmZmZkNWQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0F0dHIvaW52YWxpZGF0ZS1ub2Rl
bGlzdC1hZnRlci1hdHRyLXNldHZhbHVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGJvZHk+Ci08cD5UaGlzIHRlc3RzIHNldHRp
bmcgdGhlIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZSBub2RlIGFmdGVyIGNhY2hpbmcgY2hpbGROb2Rl
cyBvZiB0aGUgYXR0cmlidXRlIG5vZGUuPGJyPgotVGhlIGNhY2hlIHNob3VsZCBiZSBjbGVhcmVk
IGFuZCBjaGlsZE5vZGVzWzBdLmRhdGEgc2hvdWxkIHJldHVybiB0aGUgbmV3IHZhbHVlLjxicj4K
LVlvdSBzaG91bGQgc2VlIFBBU1MgYmVsb3c6PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci0KLXZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7Ci12YXIgbmFtZUF0dHJOb2RlID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCduYW1lJyk7
Ci12YXIgb2xkVmFsdWUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnb2xkTmFtZScpOwotbmFt
ZUF0dHJOb2RlLmFwcGVuZENoaWxkKG9sZFZhbHVlKTsKLWVsZW1lbnQuc2V0QXR0cmlidXRlTm9k
ZShuYW1lQXR0ck5vZGUpOwotZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKLQot
c2hvdWxkQmUoIm5hbWVBdHRyTm9kZS5jaGlsZE5vZGVzLmxlbmd0aCIsICcxJyk7Ci1zaG91bGRC
ZSgnbmFtZUF0dHJOb2RlLmNoaWxkTm9kZXNbMF0nLCAnb2xkVmFsdWUnKTsKLXNob3VsZEJlKCdu
YW1lQXR0ck5vZGUuY2hpbGROb2Rlc1swXS5kYXRhJywgJyJvbGROYW1lIicpOwotCi1kZWJ1Zygn
Jyk7Ci1zaG91bGRCZSgibmFtZUF0dHJOb2RlLnZhbHVlID0gJ25ld05hbWUnOyBuYW1lQXR0ck5v
ZGUudmFsdWUiLCAnIm5ld05hbWUiJyk7Ci1zaG91bGROb3RCZSgibmFtZUF0dHJOb2RlLmNoaWxk
Tm9kZXNbMF0iLCAnb2xkVmFsdWUnKTsKLXNob3VsZEJlKCJuYW1lQXR0ck5vZGUuY2hpbGROb2Rl
c1swXS5kYXRhIiwgJyJuZXdOYW1lIicpOwotCi08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvbm9ybWFsaXplLWNyYXNo
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L25vcm1hbGl6ZS1jcmFzaC5odG1s
CmluZGV4IDYxOGNiMGM5NjI3NjI5Mzc1ZWY2YmEzMWY2OWM0MmE5YTA0MjI4OWIuLjczNmM3OGMy
MGZhOTU0MTc3NWMxZGFmYTE5ZjU4ODhkMjc2YmRmMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0VsZW1lbnQvbm9ybWFsaXplLWNyYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRWxlbWVudC9ub3JtYWxpemUtY3Jhc2guaHRtbApAQCAtMjAsNyArMjAsMTAgQEAg
ZnVuY3Rpb24gaGFuZGxlcigpCiB9DQogDQogZWxlbS5zZXRBdHRyaWJ1dGUoImIiLCAiYSIpOw0K
LWVsZW0uYXR0cmlidXRlc1swXS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgi
aGkiKSk7DQordHJ5IHsNCisgICAgZWxlbS5hdHRyaWJ1dGVzWzBdLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJoaSIpKTsNCit9IGNhdGNoKGUpIHsNCit9DQogZWxlbS5hdHRy
aWJ1dGVzWzBdLmFkZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsIGhhbmRsZXIs
ICBmYWxzZSk7DQogZWxlbS5ub3JtYWxpemUoKTsNCiA8L3NjcmlwdD4NCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L25vcm1hbGl6ZS1jcmFzaDIuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvbm9ybWFsaXplLWNyYXNoMi5odG1sCmluZGV4IGZkNDMx
ZjAwNTk0OTM5NzA1MjdmZjY5NjdlOTJjZjdkMGU4N2YxZWYuLjkzNDEwMjRjZTJlMDQzOGFhZWY5
MGQ2NWEyYWZjYjFlNzY5MWJjMDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0Vs
ZW1lbnQvbm9ybWFsaXplLWNyYXNoMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0Vs
ZW1lbnQvbm9ybWFsaXplLWNyYXNoMi5odG1sCkBAIC01LDcgKzUsMTIgQEAKIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLiIpOwogIAogdmFyIHRlc3RE
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdERpdiIpOwotdGVzdERpdi5hdHRyaWJ1
dGVzWzBdLmFwcGVuZENoaWxkKG5ldyBUZXh0KCJ0ZXN0IikpOworCit0cnkgeworICAgIHRlc3RE
aXYuYXR0cmlidXRlc1swXS5hcHBlbmRDaGlsZChuZXcgVGV4dCgidGVzdCIpKTsKK30gY2F0Y2gg
KGUpIHsKK30KKwogdGVzdERpdi5jbG9uZU5vZGUoZmFsc2UpOwogZ2MoKTsKIHRlc3REaXYubm9y
bWFsaXplKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvZXZlbnQtd2hpbGUtcmVtb3ZpbmctYXR0cmlidXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9ldmVudC13aGlsZS1yZW1vdmluZy1hdHRyaWJ1
dGUtZXhwZWN0ZWQudHh0CmluZGV4IGRiYzJmNDBmOWRlZWViZTlmNDQ4ZWJkMTJjZjY5OWQwMmQ4
NWMyYzQuLmYzNzIzMWQ4NjA0OTViZGE5ZmM2ZGIxNGViMGU2MmU1ZTc2MTgxYmUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9ldmVudC13aGlsZS1yZW1v
dmluZy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9ldmVudC13aGlsZS1yZW1vdmluZy1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0
CkBAIC02LDcgKzYsNiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogUEFTUyBCZWZvcmUgbG9h
ZCBldmVudCBoYW5kbGVkIGZvciBvcmlnaW5hbCBsaW5rIGVsZW1lbnQuCiBQQVNTIEJlZm9yZSBs
b2FkIGV2ZW50IGhhbmRsZWQgZm9yIG9yaWdpbmFsIGxpbmsgZWxlbWVudC4KIFBBU1MgQmVmb3Jl
IGxvYWQgZXZlbnQgaGFuZGxlZCBmb3Igb3JpZ2luYWwgbGluayBlbGVtZW50LgotUEFTUyBCZWZv
cmUgbG9hZCBldmVudCBoYW5kbGVkIGZvciBvcmlnaW5hbCBsaW5rIGVsZW1lbnQuCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9ldmVudC13aGlsZS1yZW1vdmluZy1h
dHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9ldmVu
dC13aGlsZS1yZW1vdmluZy1hdHRyaWJ1dGUuaHRtbAppbmRleCBjZDdlOTdkMGRhYWZkZjA4YjBh
M2RiZmVmNzk1YTc4ZTc3ODhmODk1Li5hNDA4ZTI2MGRhOTEwOWYxNjc3NzU1M2YwMDY1MGZjOGU1
YWY2ZDkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
ZXZlbnQtd2hpbGUtcmVtb3ZpbmctYXR0cmlidXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L2V2ZW50LXdoaWxlLXJlbW92aW5nLWF0dHJpYnV0ZS5odG1s
CkBAIC0yOCwxMSArMjgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB2YXIgb3JpZ0xpbmsgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGluaycpOwogCiAgICAgdmFyIHJlbEF0dHIgPSBvcmln
TGluay5nZXRBdHRyaWJ1dGVOb2RlKCdyZWwnKTsKLSAgICB2YXIgdGV4dE5vZGUgPSByZWxBdHRy
LmNoaWxkTm9kZXNbMF07Ci0KLSAgICB2YXIgbmV3VGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiYXV0aG9yIik7Ci0KLSAgICByZWxBdHRyLnJlcGxhY2VDaGlsZChuZXdUZXh0Tm9k
ZSwgdGV4dE5vZGUpOworICAgIHJlbEF0dHIudmFsdWUgPSAiYXV0aG9yIjsKIAogICAgIHNldFRp
bWVvdXQoc3RlcDIsIDApOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0
YXRpb25PYnNlcnZlci9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IGQ3ZjYzMTZmZTVkZDU2MGQ5YjVkNTFiNzJhZmI0ZDFmOGFiMDZlZjkuLmNiOTQ5
YWEzM2FkZDJjMGQ2NjhhMTJiMjAxYjUzOWI1NmJjYzdkYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL29ic2VydmUt
YXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTE5MCwxMyArMTkwLDYgQEAgUEFTUyBtdXRhdGlv
bnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKIFBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5h
bWUgaXMgImRhdGEtdGVzdCIKIFBBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJmb28iCiAK
LVRlc3QgdGhhdCBtdXRhdGluZyBhbiBhdHRyaWJ1dGUgYnkgYXR0YWNoaW5nIGEgY2hpbGQgdG8g
YW4gYXR0ciBub2RlIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMKLVBBU1MgbXV0YXRpb25zLmxl
bmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2Ci1QQVNTIG11dGF0aW9u
c1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFt
ZSBpcyAiZGF0YS10ZXN0IgotUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKLQog
VGVzdCB0aGF0IG11dGF0aW5nIHZpYSBzZXRBdHRyaWJ1dGVOb2RlIGRlbGl2ZXJzIG11dGF0aW9u
IHJlY29yZHMKIFBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCiBQQVNTIG11dGF0aW9uc1swXS50
YXJnZXQgaXMgZGl2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL29ic2VydmUtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0
YXRpb25PYnNlcnZlci9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbAppbmRleCAzNmUyM2M1ZDM3MDQ3
ODQyZTU4ZWQ3NzJlNTI4Nzg3NWNiNDdiMzAyLi5jYzU2MDZjZTgyZjI4NjAzYjZkNGRjN2Q2MWRl
ODRkZTI2ZmNlMjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL29ic2VydmUtYXR0cmlidXRlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvb2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0bWwKQEAgLTgwMyw0MCArODAz
LDYgQEAgZnVuY3Rpb24gdGVzdE11dGF0ZVRocm91Z2hBdHRyTm9kZVZhbHVlKCkgewogICAgIHN0
YXJ0KCk7CiB9CiAKLWZ1bmN0aW9uIHRlc3RNdXRhdGVUaHJvdWdoQXR0ck5vZGVDaGlsZCgpIHsK
LSAgICB2YXIgb2JzZXJ2ZXI7Ci0KLSAgICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgZGVi
dWcoJ1Rlc3QgdGhhdCBtdXRhdGluZyBhbiBhdHRyaWJ1dGUgYnkgYXR0YWNoaW5nIGEgY2hpbGQg
dG8gYW4gYXR0ciBub2RlIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMnKTsKLQotICAgICAgICBt
dXRhdGlvbnMgPSBudWxsOwotICAgICAgICBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVy
KGZ1bmN0aW9uKG11dGF0aW9ucykgewotICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11
dGF0aW9uczsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcsICdmb28n
KTsKLSAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0
cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7Ci0gICAgICAgIGRpdi5hdHRyaWJ1dGVzWydkYXRhLXRl
c3QnXS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnYmFyJykpOwotCi0gICAg
ICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2go
KSB7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKLSAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnZGl2Jyk7Ci0gICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJkYXRhLXRlc3QiJyk7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnImZvbyInKTsKLQotICAgICAgICBvYnNl
cnZlci5kaXNjb25uZWN0KCk7Ci0gICAgICAgIGRlYnVnKCcnKTsKLSAgICAgICAgcnVuTmV4dFRl
c3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCiBmdW5jdGlvbiB0ZXN0U2V0QW5kUmVt
b3ZlQXR0cmlidXRlTm9kZSgpIHsKICAgICB2YXIgb2JzZXJ2ZXI7CiAKQEAgLTk4Myw3ICs5NDks
NiBAQCB2YXIgdGVzdHMgPSBbCiAgICAgdGVzdFN0eWxlQXR0cmlidXRlUHJvcGVydHlBY2Nlc3NP
bGRWYWx1ZSwKICAgICB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzc0lnbm9yZU5vb3As
CiAgICAgdGVzdE11dGF0ZVRocm91Z2hBdHRyTm9kZVZhbHVlLAotICAgIHRlc3RNdXRhdGVUaHJv
dWdoQXR0ck5vZGVDaGlsZCwKICAgICB0ZXN0U2V0QW5kUmVtb3ZlQXR0cmlidXRlTm9kZSwKICAg
ICB0ZXN0TWl4ZWROb2RlQW5kRWxlbWVudE9wZXJhdGlvbnMsCiAgICAgdGVzdE5hbWVkTm9kZU1h
cE9wZXJhdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2F0dHJpYnV0ZS1j
aGFuZ2Utb24tbXV0YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2F0dHJp
YnV0ZS1jaGFuZ2Utb24tbXV0YXRlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2IwM2I3YjE5NzA2Y2U0Mzc2NmUxMDBkZjNmOWQ0MDVjNTE4NWEzOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9hdHRyaWJ1dGUtY2hhbmdlLW9uLW11dGF0ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSArMCwwIEBACi1QQVNTOiBNdXRhdGlvbiBldmVudHMgZGVsYXllZCBkdXJpbmcgQXR0
ciBtb2RpZmljYXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1
dGUtY2hhbmdlLW9uLW11dGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0cmlidXRl
LWNoYW5nZS1vbi1tdXRhdGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU3
Mjk5NzQ0NmEwZGJlN2YwNDk3NTg3ZGQ4MzIxNDY2NGEwMTA1YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1
dGUtY2hhbmdlLW9uLW11dGF0ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAot
PHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKLQotd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBhdHRyID0gZG9jdW1l
bnQuY3JlYXRlQXR0cmlidXRlKCJhdHRyIik7Ci0gICAgYXR0ci5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgiRkFJTCIpKTsKLSAgICBhdHRyLmFkZEV2ZW50TGlzdGVuZXIoIkRP
TVN1YnRyZWVNb2RpZmllZCIsIGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwg
PSB0aGlzLnZhbHVlIH0sIGZhbHNlKTsKLSAgICBhdHRyLnZhbHVlID0gIlBBU1M6IE11dGF0aW9u
IGV2ZW50cyBkZWxheWVkIGR1cmluZyBBdHRyIG1vZGlmaWNhdGlvbi4iOwotfQotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbXBvcnQtYXR0cmlidXRlLW5vZGUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2ltcG9ydC1hdHRyaWJ1dGUtbm9kZS5odG1sCmlu
ZGV4IGJiNzhmNTMwZDFmYTAzNzA1ZDY5ZDE0OTEwYzhhNmUwYzdiMDVkMDYuLmUzZDZhNmNhOGRl
NmQ3NjY4ZmE0Yjk0OTUzMjAxNGI2ZjUxYmRmMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2ltcG9ydC1hdHRyaWJ1dGUtbm9kZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2ltcG9ydC1hdHRyaWJ1dGUtbm9kZS5odG1sCkBAIC0xMiw4ICsxMiw4IEBAIHRyeSB7CiAg
IHZhciBkc3RFbGVtID0geG1sZDIuZG9jdW1lbnRFbGVtZW50OwogCiAgIHZhciBpbXBvcnRlZE5v
ZGUgPSB4bWxkMi5pbXBvcnROb2RlKHNyY0VsZW0uYXR0cmlidXRlc1sidGVzdCJdLCBmYWxzZSk7
Ci0gIGlmIChpbXBvcnRlZE5vZGUuZmlyc3RDaGlsZC5ub2RlVmFsdWUgIT0gImJheiIpCi0gICAg
dGhyb3cgIndyb25nIGltcG9ydGVkIGF0dHJpYnV0ZSBjaGlsZDogJyIgKyBpbXBvcnRlZE5vZGUu
Zmlyc3RDaGlsZC5ub2RlVmFsdWUgKyAiJyI7CisgIGlmIChpbXBvcnRlZE5vZGUubm9kZVZhbHVl
ICE9ICJiYXoiKQorICAgIHRocm93ICJ3cm9uZyBpbXBvcnRlZCBhdHRyaWJ1dGUgY2hpbGQ6ICci
ICsgaW1wb3J0ZWROb2RlLm5vZGVWYWx1ZSArICInIjsKIAogICBkc3RFbGVtLnNldEF0dHJpYnV0
ZU5vZGUoaW1wb3J0ZWROb2RlKTsKICAgaWYgKGRzdEVsZW0uZ2V0QXR0cmlidXRlKCJ0ZXN0Iikg
IT0gImJheiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbnNlcnRlZEludG9E
b2N1bWVudC1jaGlsZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5zZXJ0ZWRJbnRvRG9j
dW1lbnQtY2hpbGQuaHRtbAppbmRleCAxOTRlZWIxOWFhMzlmNWI0ZmMxNGRhZWE2OTAzMTkzMmVi
NjM4MmE2Li4xZWEwYTk0MzJlNzFmYTgwM2IyODFkNmE2YWRhZTI5YWM2NGM3NWZjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbnNlcnRlZEludG9Eb2N1bWVudC1jaGlsZC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2luc2VydGVkSW50b0RvY3VtZW50LWNoaWxkLmh0
bWwKQEAgLTI4LDggKzI4LDcgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKICAgICAKICAg
ICBhdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCJ3aWR0aCIpOwogICAgIG9iamVjdC5z
ZXRBdHRyaWJ1dGVOb2RlKGF0dHIpOwotICAgIGF0dHIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoMSkpOwotICAgIGF0dHIuY2hpbGROb2Rlc1swXS5hZGRFdmVudExpc3RlbmVy
KCJET01Ob2RlUmVtb3ZlZCIsIGhhbmRsZXIsIGZhbHNlKTsKKyAgICBhdHRyLnZhbHVlID0gIjEi
OwogCiAgICAgZW1iZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJlbWJlZCIpOwogICAgIGVt
YmVkLnNldEF0dHJpYnV0ZSgid2lkdGgiLCAyKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2luc2VydGVkSW50b0RvY3VtZW50LXNpYmxpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2luc2VydGVkSW50b0RvY3VtZW50LXNpYmxpbmcuaHRtbAppbmRleCA3YWVkODU5MmNj
OTJkZGZlYmFjNjM4M2VmYWM1MTk3NDhkMWU4YmFjLi40OWQ0MjVkZmY3MTRiNjIzYWM0NDRhY2E4
ZWViMjg0NWI5NzVlNWJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbnNlcnRl
ZEludG9Eb2N1bWVudC1zaWJsaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQtc2libGluZy5odG1sCkBAIC0zMCw4ICszMCw3IEBAIHdpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbigpCiAgICAgCiAgICAgYXR0ciA9IGRvY3VtZW50LmNyZWF0ZUF0dHJp
YnV0ZSgid2lkdGgiKTsKICAgICBvYmplY3Quc2V0QXR0cmlidXRlTm9kZShhdHRyKTsKLSAgICBh
dHRyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKDEpKTsKLSAgICBhdHRyLmNo
aWxkTm9kZXNbMF0uYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQiLCBoYW5kbGVyLCBm
YWxzZSk7CisgICAgYXR0ci52YWx1ZSArPSAiMSI7CiAgICAgCiAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChvYmplY3QpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbm8tYXNzZXJ0LWZvci1tYWxmb3JtZWQtanMtdXJsLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uby1hc3NlcnQtZm9yLW1hbGZvcm1lZC1qcy11cmwtYXR0
cmlidXRlLWV4cGVjdGVkLnR4dAppbmRleCAyY2I4ZWZhM2M5OTkzODRkYjUzODkwZDZlZTk3OTY5
NzJiYjhjMjI5Li5lOTYzNzVhZTgxZGQzMjUzMTI1MzljN2Y3YmFhZjAwMTEwYTM0Njc4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uby1hc3NlcnQtZm9yLW1hbGZvcm1lZC1qcy11
cmwtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uby1h
c3NlcnQtZm9yLW1hbGZvcm1lZC1qcy11cmwtYXR0cmlidXRlLWV4cGVjdGVkLnR4dApAQCAtMSw0
ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCBpZGVudGlmaWVyICdvcmVtJworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0OiBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdvcmVtJwogVGhpcyB0ZXN0cyB0aGF0IHdlIGRvIG5v
dCBhc3NlcnQgd2hlbiBhIG1hbGZvcm1lZCBKUyBVUkwgaXMgcGFzc2VkIHRvIHRoZSAnc3JjJyBh
dHRyaWJ1dGUgb2YgYW4gaWZyYW1lLiBUaGUgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgQVNT
RVJULgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9uby1hc3NlcnQtZm9yLW1hbGZvcm1lZC1qcy11cmwtYXR0cmlidXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uby1hc3NlcnQtZm9yLW1hbGZvcm1lZC1qcy11cmwtYXR0
cmlidXRlLmh0bWwKaW5kZXggMjA3YWQ2M2ViOWY2MTQwMDg4OTFkOTIwYmEyMmNhN2VlZTBmMjUx
My4uYjY0MjA0MDViNDEzYWFlMWZjMjVkYTgzNGE3NWI1MmNhYjQ4ZWUxOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbm8tYXNzZXJ0LWZvci1tYWxmb3JtZWQtanMtdXJsLWF0dHJp
YnV0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vLWFzc2VydC1mb3ItbWFsZm9y
bWVkLWpzLXVybC1hdHRyaWJ1dGUuaHRtbApAQCAtMTEsMTAgKzExLDEwIEBAIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKIGZ1bmN0aW9uIHJ1blRlc3QoKQogewogICAgIHZhciB0ZXN0RnJhbWUxID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RGcmFtZTEnKTsKLSAgICB0ZXN0RnJhbWUxLmdl
dEF0dHJpYnV0ZU5vZGUoInNyYyIpLmZpcnN0Q2hpbGQuYXBwZW5kRGF0YSgibWlzc2luZ0Z1bmN0
aW9uKHRoaXMpIG9yZW0gaXBzdW0gZG9zb2xvcmVtIik7CisgICAgdGVzdEZyYW1lMS5nZXRBdHRy
aWJ1dGVOb2RlKCJzcmMiKS52YWx1ZSArPSAibWlzc2luZ0Z1bmN0aW9uKHRoaXMpIG9yZW0gaXBz
dW0gZG9zb2xvcmVtIjsKIAogICAgIHZhciB0ZXN0RnJhbWUyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3RGcmFtZTInKTsKLSAgICB0ZXN0RnJhbWUyLmdldEF0dHJpYnV0ZU5vZGUoInNy
YyIpLmZpcnN0Q2hpbGQuYXBwZW5kRGF0YSgiamF2YXNjcmlwdDptaXNzaW5nRnVuY3Rpb24odGhp
cykgb3JlbSBpcHN1bSBkb3NvbG9yZW0iKTsKKyAgICB0ZXN0RnJhbWUyLmdldEF0dHJpYnV0ZU5v
ZGUoInNyYyIpLnZhbHVlICs9ICJqYXZhc2NyaXB0Om1pc3NpbmdGdW5jdGlvbih0aGlzKSBvcmVt
IGlwc3VtIGRvc29sb3JlbSI7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTIyLDQgKzIyLDQg
QEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgPGlmcmFtZSBpZD0ndGVzdEZyYW1lMScgc3JjPSdq
YXZhc2NyaXB0Oic+PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBpZD0ndGVzdEZyYW1lMicgc3JjPSdm
b28nPjwvaWZyYW1lPgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vcm1hbGl6ZS1h
dHRyaWJ1dGVzLW11dGF0aW9uLWV2ZW50LWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ub3JtYWxpemUtYXR0cmlidXRlcy1tdXRhdGlvbi1ldmVudC1jcmFzaC5odG1sCmluZGV4IDli
MjYwYzliZjdlOGQwNjExMmVlMGM3YmQxZGI0NDE1YjhjY2Q4ODAuLmZlYjE4ZmFlYmU3ZTBkNjk2
Y2EwNmNiMjZjMDRjNTA1ODU1YzZhODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L25vcm1hbGl6ZS1hdHRyaWJ1dGVzLW11dGF0aW9uLWV2ZW50LWNyYXNoLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbm9ybWFsaXplLWF0dHJpYnV0ZXMtbXV0YXRpb24tZXZlbnQtY3Jh
c2guaHRtbApAQCAtMTIsNyArMTIsNyBAQCBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBtdXRhdGlu
ZyBhbiBlbGVtZW50cyBhdHRyaWJ1dGUgbWFwIGR1cmluZyBET01TdWJ0cmVlTW9kaQogdmFyIGVs
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykKIGVsLnNldEF0dHJpYnV0ZSgnYScsICdh
JykKIGVsLnNldEF0dHJpYnV0ZSgnYicsICdiJykKLWVsLmF0dHJpYnV0ZXNbMV0uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInRlc3QiKSkKK2VsLmF0dHJpYnV0ZXNbMV0udmFs
dWUgKz0gInRlc3QiCiBlbC5hdHRyaWJ1dGVzWzFdLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRy
ZWVNb2RpZmllZCcsIGZ1bmN0aW9uKCkgeyBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2InKSB9LCAgZmFs
c2UpCiBlbC5ub3JtYWxpemUoKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
ZXJpYWxpemUtbm9kZXMueGh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXJpYWxpemUtbm9k
ZXMueGh0bWwKaW5kZXggYWU0NzkxZGM4YjQ0ZDYzMWI0NTU2YTY2YzlkMmRmNGY2NWQzNGVlMC4u
MDkyNGFiYzc5OTFjZDBmMGIyOTVlMjdiMjQ0OGMxZmIxNDIyN2FlMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2VyaWFsaXplLW5vZGVzLnhodG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NlcmlhbGl6ZS1ub2Rlcy54aHRtbApAQCAtMjgsOCArMjgsNyBAQCB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgewogICAgIGMuc2V0QXR0cmlidXRl
TlMoInVybjpmb28tbnMiLCAiZm9vOm5hbWUiLCAib25lIik7CiAgICAgYy5zZXRBdHRyaWJ1dGVO
UygidXJuOmJhci1ucyIsICJiYXI6bmFtZSIsICJ0d28iKTsKICAgICB2YXIgYXR0ciA9IGQuY3Jl
YXRlQXR0cmlidXRlTlMobnVsbCwgIm5hbWUiKTsKLSAgICB2YXIgdGV4dCA9IGQuY3JlYXRlVGV4
dE5vZGUoInRocmVlIik7Ci0gICAgYXR0ci5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBhdHRyLnZh
bHVlICs9ICJ0aHJlZSI7CiAgICAgYy5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpOwogICAgIAogICAg
IHdpbmRvdy5hbGVydCgiZm9vOm5hbWUgaXMgIiArIGMuZ2V0QXR0cmlidXRlTlMoInVybjpmb28t
bnMiLCAibmFtZSIpICsgIiBhbmQgc2hvdWxkIGJlIG9uZSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWlmcmFtZS1zcmMtYWxpYXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWlm
cmFtZS1zcmMtYWxpYXMtZXhwZWN0ZWQudHh0CmluZGV4IGFhM2M3NWEzMThkOTZkNzk3MTcwZTBj
Y2JhNWIzYTAwM2VmZjFhZGQuLjlkYzE4MjIzZmE2ZWY4ODg3NGRlMzhjNDUzMDcwZjQzOGYwOTUy
ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC1pZnJhbWUtc3JjLWFsaWFzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtaWZyYW1lLXNyYy1hbGlhcy1leHBlY3RlZC50eHQKQEAg
LTIsMTYgKzIsMTAgQEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg1OiBCbG9ja2VkIGEgZnJhbWUg
d2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnIKIENPTlNPTEUgTUVTU0FHRTog
bGluZSA4NTogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiIGZyb20gYWNjZXNzaW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly9sb2NhbGhvc3Q6
ODA4MCIuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiBDT05TT0xF
IE1FU1NBR0U6IGxpbmUgODU6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8v
bG9jYWxob3N0OjgwODAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNo
LgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg1OiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4g
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRoIG9yaWdp
biAiaHR0cDovL2xvY2FsaG9zdDo4MDgwIi4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMg
bXVzdCBtYXRjaC4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSA4NTogQmxvY2tlZCBhIGZyYW1lIHdp
dGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgZnJhbWUg
d2l0aCBvcmlnaW4gImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIuIFByb3RvY29scywgZG9tYWlucywg
YW5kIHBvcnRzIG11c3QgbWF0Y2guCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjY6IEJsb2NrZWQg
YSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2lu
ZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0OjgwODAiLiBQcm90b2NvbHMs
IGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI3
OiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJv
bSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4MDgwIi4g
UHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIENPTlNPTEUgTUVTU0FH
RTogbGluZSAzMTogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly9sb2NhbGhv
c3Q6ODA4MCIuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiBDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMzY6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRw
Oi8vbG9jYWxob3N0OjgwODAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1h
dGNoLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQyOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmln
aW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRoIG9y
aWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4MDgwIi4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9y
dHMgbXVzdCBtYXRjaC4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSA0NjogQmxvY2tlZCBhIGZyYW1l
IHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgZnJh
bWUgd2l0aCBvcmlnaW4gImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIuIFByb3RvY29scywgZG9tYWlu
cywgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNTI6IEJsb2Nr
ZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vz
c2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0OjgwODAiLiBQcm90b2Nv
bHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDYwOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIg
ZnJvbSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4MDgw
Ii4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLUNPTlNPTEUgTUVT
U0FHRTogbGluZSA2NDogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly9sb2Nh
bGhvc3Q6ODA4MCIuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiBD
T05TT0xFIE1FU1NBR0U6IGxpbmUgNzA6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJo
dHRwOi8vbG9jYWxob3N0OjgwODAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0
IG1hdGNoLgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc1OiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBv
cmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRo
IG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4MDgwIi4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQg
cG9ydHMgbXVzdCBtYXRjaC4KIFRoaXMgc2NyaXB0IHRlc3RzIGlmIGlmcmFtZS5zcmMgY2FuIGJl
IHNldCB0byBhIEphdmFTY3JpcHQgVVJMIHZpYSBhbHRlcm5hdGUgRE9NIGludGVyZmFjZXMgKHN1
Y2ggYXMgTm9kZS50ZXh0Q29udGVudCBvciBOYW1lZE5vZGUuc2V0TmFtZWRJdGVtKS4gVGhlIHRl
c3QgaXMgc3VjY2Vzc2Z1bCBpZiBubyBhbGVydHMgYXBwZWFyIGFuZCB0aGUgcGFnZSBmaW5pc2hl
cyBsb2FkaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbWFnZS13aXRo
LWF0dHItY2hhbmdlLWFmdGVyLWRlbGV0ZS1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL2ltYWdlLXdpdGgtYXR0ci1jaGFuZ2UtYWZ0ZXItZGVsZXRlLWNyYXNoLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE0M2ZhZjNlODk3YTg0
NmQwNTFiZDQ4OGRlNzBiMjhjMzlkNjBlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ltYWdlLXdpdGgtYXR0ci1j
aGFuZ2UtYWZ0ZXItZGVsZXRlLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
ICswLDAgQEAKLVRlc3QgUGFzc2VzIHdoZW4gdGhlcmUgaXMgbm8gY3Jhc2gKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N2Zy9jdXN0b20vaW1hZ2Utd2l0aC1hdHRyLWNoYW5nZS1hZnRlci1kZWxl
dGUtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vaW1hZ2Utd2l0aC1hdHRyLWNo
YW5nZS1hZnRlci1kZWxldGUtY3Jhc2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjI4YjRhZWRlYWUzN2Q2NjU5OWNmMzMzNzcxYjdkMjQ2MzZlZTJmYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L2ltYWdlLXdpdGgtYXR0ci1jaGFuZ2UtYWZ0ZXItZGVsZXRlLWNyYXNoLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwzOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KLSAgPGJvZHkgaWQ9ImJvZHkiPgotICAgIDxzdmcg
aWQ9InN2Z1Jvb3QiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgotICAgICAgPGltYWdlIGhlaWdodD0i
NDEwIiBpZD0ic3ZnSW1hZ2UiIHdpZHRoPSI1MDMiIHg9IjAiIHk9IjAiIHhsaW5rOmhyZWY9InJl
c291cmNlcy9ncmVlbi1jaGVja2VyLnBuZyIvPgotICAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBmb3JjZUdDKCkgewotICAgICAgICAgIGlmICh3aW5kb3cuR0NDb250cm9s
bGVyKQotICAgICAgICAgICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLSAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBnYygpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3ZnSW1hZ2UgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic3ZnSW1hZ2UiKTsKLSAgICAgICAgZG9jRWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdmdSb290Iik7Ci0gICAgICAgIG5ld1RleHROb2RlID0g
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIn8gVGVzdCBQYXNzZXMiKTsKLSAgICAgICAgc2V0VGlt
ZW91dCgiY3Jhc2goKSIsIDApOwotCi0gICAgICAgIGZ1bmN0aW9uIGNyYXNoKCkgewotICAgICAg
ICAgIHN2Z0ltYWdlLmF0dHJpYnV0ZXNbNV0ucmVwbGFjZUNoaWxkKG5ld1RleHROb2RlLCBzdmdJ
bWFnZS5hdHRyaWJ1dGVzWzVdLmNoaWxkTm9kZXNbMF0pOwotICAgICAgICAgIHN2Z0ltYWdlLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoc3ZnSW1hZ2UpOwotICAgICAgICAgIGRlbGV0ZSBzdmdJbWFn
ZTsKLSAgICAgICAgICBmb3JjZUdDKCk7Ci0gICAgICAgICAgZG9jRWxlbWVudC5hcHBlbmRDaGls
ZChuZXdUZXh0Tm9kZSk7Ci0gICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmlubmVySFRNTCA9ICJUZXN0
IFBhc3NlcyB3aGVuIHRoZXJlIGlzIG5vIGNyYXNoIjsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgPC9zY3JpcHQ+Ci0g
ICAgPC9zdmc+Ci0gIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Ry
YXZlcnNhbC9tb3otYnVnNTkwNzcxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RyYXZlcnNh
bC9tb3otYnVnNTkwNzcxLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTYyZjc2YTUyZjlhYzQyMDAzODUzMDNkODFlYmE5ZWMyNjllNTY4Ny4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy90cmF2ZXJzYWwv
bW96LWJ1ZzU5MDc3MS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAK
LUNPTlNPTEUgTUVTU0FHRTogbGluZSAyOTogdGVzdDE6IGl0ZXJhdG9yIHNob3VsZCBiZSBvbiB0
aGUgZmlyc3QgY2hpbGQgYXR0cmlidXRlOiB0cnVlCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzI6
IHRlc3QxOiBpdGVyYXRvciBzaG91bGQgYmUgb24gdGhlIGF0dHJpYnV0ZSBub3c6IHRydWUKLUNP
TlNPTEUgTUVTU0FHRTogbGluZSA0MjogdGVzdDI6IGl0ZXJhdG9yIHNob3VsZCBiZSBvbiB0aGUg
Zmlyc3QgY2hpbGQgYXR0cmlidXRlOiB0cnVlCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNDU6IHRl
c3QyOiBpdGVyYXRvciBzaG91bGQgYmUgb24gdGhlIGF0dHJpYnV0ZSBub3c6IHRydWUKLUNPTlNP
TEUgTUVTU0FHRTogbGluZSA1NzogdGVzdDM6IGl0ZXJhdG9yIHNob3VsZCBiZSBvbiB0aGUgZmly
c3QgY2hpbGQgYXR0cmlidXRlOiB0cnVlCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjA6IHRlc3Qz
OiBpdGVyYXRvciBzaG91bGQgYmUgb24gdGhlIGF0dHJpYnV0ZSBub3c6IHRydWUKLU1vemlsbGEg
QnVnIDU5MDc3MQotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYXZlcnNhbC9tb3otYnVn
NTkwNzcxLmh0bWwgYi9MYXlvdXRUZXN0cy90cmF2ZXJzYWwvbW96LWJ1ZzU5MDc3MS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzc0MDg1YWY2Mzc0ZTBlZWU2ZTM2ZjdmMjM0
ZTg0NzhjZjM4ZjMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3RyYXZlcnNhbC9tb3otYnVnNTkwNzcxLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw3MCArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotPCEtLQotVGVzdCBh
ZGFwdGVkIGZyb20gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhLWNlbnRyYWwvc291cmNl
L2NvbnRlbnQvYmFzZS90ZXN0L3Rlc3RfYnVnNTkwNzcxLmh0bWwKLQotaHR0cHM6Ly9idWd6aWxs
YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkwNzcxCi0tLT4KLTxoZWFkPgotICA8dGl0
bGU+VGVzdCBmb3IgQnVnIDU5MDc3MTwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxhIHRhcmdl
dD0iX2JsYW5rIiBocmVmPSJodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNn
aT9pZD01OTA3NzEiPk1vemlsbGEgQnVnIDU5MDc3MTwvYT4KLTxwIGlkPSJkaXNwbGF5Ij48L3A+
Ci08cHJlIGlkPSJ0ZXN0Ij4KLTxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+
Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0K
LS8qKiBUZXN0IGZvciBCdWcgNTkwNzcxICoqLwotCi1mdW5jdGlvbiB0ZXN0MSgpCi17Ci0gIHZh
ciBhdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCJmb28iKTsKLSAgYXR0ci52YWx1ZSA9
ICJiYXIiOwotICB2YXIgbmkgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoYXR0ciwgLTEs
IG51bGwsIGZhbHNlKTsKLSAgbmkubmV4dE5vZGUoKTsKLSAgbmkubmV4dE5vZGUoKTsKLSAgY29u
c29sZS5sb2coInRlc3QxOiBpdGVyYXRvciBzaG91bGQgYmUgb24gdGhlIGZpcnN0IGNoaWxkIGF0
dHJpYnV0ZTogIiArIChuaS5yZWZlcmVuY2VOb2RlID09PSBhdHRyLmZpcnN0Q2hpbGQpKTsKLQot
ICBhdHRyLnJlbW92ZUNoaWxkKGF0dHIuZmlyc3RDaGlsZCk7Ci0gIGNvbnNvbGUubG9nKCJ0ZXN0
MTogaXRlcmF0b3Igc2hvdWxkIGJlIG9uIHRoZSBhdHRyaWJ1dGUgbm93OiAiICsgKG5pLnJlZmVy
ZW5jZU5vZGUgPT09IGF0dHIpKTsKLX0KLQotZnVuY3Rpb24gdGVzdDIoKQotewotICB2YXIgYXR0
ciA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgiZm9vIik7Ci0gIGF0dHIudmFsdWUgPSAiYmFy
IjsKLSAgdmFyIG5pID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGF0dHIsIC0xLCBudWxs
LCBmYWxzZSk7Ci0gIG5pLm5leHROb2RlKCk7Ci0gIG5pLm5leHROb2RlKCk7Ci0gIGNvbnNvbGUu
bG9nKCJ0ZXN0MjogaXRlcmF0b3Igc2hvdWxkIGJlIG9uIHRoZSBmaXJzdCBjaGlsZCBhdHRyaWJ1
dGU6ICIgKyAobmkucmVmZXJlbmNlTm9kZSA9PT0gYXR0ci5maXJzdENoaWxkKSk7Ci0KLSAgYXR0
ci52YWx1ZSA9ICIiOwotICBjb25zb2xlLmxvZygidGVzdDI6IGl0ZXJhdG9yIHNob3VsZCBiZSBv
biB0aGUgYXR0cmlidXRlIG5vdzogIiArIChuaS5yZWZlcmVuY2VOb2RlID09PSBhdHRyKSk7Ci19
Ci0KLWZ1bmN0aW9uIHRlc3QzKCkKLXsKLSAgdmFyIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVBdHRy
aWJ1dGUoImZvbyIpOwotICBhdHRyLnZhbHVlID0gImJhciI7Ci0gIHZhciBub2RlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gIG5vZGUuc2V0QXR0cmlidXRlTm9kZShhdHRyKTsK
LSAgdmFyIG5pID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGF0dHIsIC0xLCBudWxsLCBm
YWxzZSk7Ci0gIG5pLm5leHROb2RlKCk7Ci0gIG5pLm5leHROb2RlKCk7Ci0gIGNvbnNvbGUubG9n
KCJ0ZXN0MzogaXRlcmF0b3Igc2hvdWxkIGJlIG9uIHRoZSBmaXJzdCBjaGlsZCBhdHRyaWJ1dGU6
ICIgKyAobmkucmVmZXJlbmNlTm9kZSA9PT0gYXR0ci5maXJzdENoaWxkKSk7Ci0KLSAgbm9kZS5z
ZXRBdHRyaWJ1dGUoImZvbyIsICIiKTsKLSAgY29uc29sZS5sb2coInRlc3QzOiBpdGVyYXRvciBz
aG91bGQgYmUgb24gdGhlIGF0dHJpYnV0ZSBub3c6ICIgKyAobmkucmVmZXJlbmNlTm9kZSA9PT0g
YXR0cikpOwotfQotCi10ZXN0MSgpOwotdGVzdDIoKTsKLXRlc3QzKCk7Ci0KLTwvc2NyaXB0Pgot
PC9wcmU+Ci08L2JvZHk+Ci08L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>