<?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>227275</bug_id>
          
          <creation_ts>2021-06-22 19:01:15 -0700</creation_ts>
          <short_desc>[WebIDL] Rework runtime enabled properties leveraging PropertyCallback</short_desc>
          <delta_ts>2021-07-06 20:09:33 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>227732</dependson>
          <blocked>158557</blocked>
    
    <blocked>227668</blocked>
    
    <blocked>227672</blocked>
    
    <blocked>227673</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1771846</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-22 19:01:15 -0700</bug_when>
    <thetext>This approach preserves HashTable&apos;s immutability while avoiding addition of extra checks to entry lookup and memory usage increase.
Enables removal of eager property reification in a follow-up change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773647</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-29 19:02:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/79944793&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774525</commentid>
    <comment_count>2</comment_count>
      <attachid>432811</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-02 12:21:27 -0700</bug_when>
    <thetext>Created attachment 432811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774691</commentid>
    <comment_count>3</comment_count>
      <attachid>432811</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-03 12:30:36 -0700</bug_when>
    <thetext>Comment on attachment 432811
Patch

This was already reviewed in https://bugs.webkit.org/show_bug.cgi?id=158557#c40, and should be safe (in terms of performance &amp; web-compat) to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774692</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-03 12:57:57 -0700</bug_when>
    <thetext>Committed r279546 (239382@main): &lt;https://commits.webkit.org/239382@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432811.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775171</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-06 19:50:09 -0700</bug_when>
    <thetext>This caused 2-3% regression in Speedometer/jQuery-TodoMVC on M1 macOS (not sure whether this is in Intel macOS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775175</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-07-06 20:09:33 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 227732</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432811</attachid>
            <date>2021-07-02 12:21:27 -0700</date>
            <delta_ts>2021-07-03 12:57:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227275-20210702222125.patch</filename>
            <type>text/plain</type>
            <size>826952</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzk1MDMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTAyICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbV2ViSURMXSBSZXdvcmsgcnVudGltZSBlbmFibGVkIHBy
b3BlcnRpZXMgbGV2ZXJhZ2luZyBQcm9wZXJ0eUNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyNzUKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICAqIHN0cmVzcy9sYXp5LXByb3BlcnR5LWNyb3NzLXJl
YWxtLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvbGF6eS1wcm9wZXJ0eS1nZXQtY2FjaGUu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9sYXp5LXByb3BlcnR5LWdvcGQuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9sYXp5LXByb3BlcnR5LWhhc293bnByb3BlcnR5LWNhY2hlLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvbGF6eS1wcm9wZXJ0eS1wdXQtY2FjaGUuanM6IEFk
ZGVkLgorCiAyMDIxLTA2LTMwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFR1cm4gb2ZmIGRhdGEgSUNzIGJ5IGRlZmF1bHQKSW5kZXg6IEpTVGVzdHMvc3RyZXNz
L2xhenktcHJvcGVydHktY3Jvc3MtcmVhbG0uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJl
c3MvbGF6eS1wcm9wZXJ0eS1jcm9zcy1yZWFsbS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3Rz
L3N0cmVzcy9sYXp5LXByb3BlcnR5LWNyb3NzLXJlYWxtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCYWQgdmFs
dWU6ICR7YWN0dWFsfS5gKTsKK30KKworKGZ1bmN0aW9uIGdldCgpIHsKKyAgICBjb25zdCBvdGhl
ciA9ICR2bS5jcmVhdGVHbG9iYWxPYmplY3QoKTsKKyAgICBjb25zdCBsYXp5UHJvcGVydHkgPSBv
dGhlci4kdm0uY3JlYXRlU3RhdGljTGF6eVByb3BlcnR5KCk7CisgICAgb3RoZXIuaXNFbmFibGVk
TGF6eUNhbGxiYWNrQWNjZXNzb3IgPSB0cnVlOworICAgIHNob3VsZEJlKGxhenlQcm9wZXJ0eS50
ZXN0TGF6eUNhbGxiYWNrQWNjZXNzb3IsIGxhenlQcm9wZXJ0eSk7Cit9KSgpOworCisoZnVuY3Rp
b24gc2V0KCkgeworICAgIGNvbnN0IG90aGVyID0gJHZtLmNyZWF0ZUdsb2JhbE9iamVjdCgpOwor
ICAgIGNvbnN0IGxhenlQcm9wZXJ0eSA9IG90aGVyLmV2YWwoIiR2bS5jcmVhdGVTdGF0aWNMYXp5
UHJvcGVydHkoKSIpOworCisgICAgb3RoZXIuaXNFbmFibGVkTGF6eUNhbGxiYWNrQ3VzdG9tQWNj
ZXNzb3IgPSB0cnVlOworICAgIGNvbnN0IHZhbHVlID0ge307CisgICAgbGF6eVByb3BlcnR5LnRl
c3RMYXp5Q2FsbGJhY2tDdXN0b21BY2Nlc3NvciA9IHZhbHVlOworICAgIHNob3VsZEJlKGxhenlQ
cm9wZXJ0eS50ZXN0RmllbGQsIHZhbHVlKTsKKworICAgIG90aGVyLmlzRW5hYmxlZExhenlDYWxs
YmFja0NvbnN0YW50SW50ZWdlciA9IHRydWU7CisgICAgbGF6eVByb3BlcnR5LnRlc3RMYXp5Q2Fs
bGJhY2tDb25zdGFudEludGVnZXIgPSAxOworICAgIHNob3VsZEJlKGxhenlQcm9wZXJ0eS50ZXN0
TGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRlZ2VyLCA0Mik7Cit9KSgpOworCisoZnVuY3Rpb24gb3du
S2V5cygpIHsKKyAgICBjb25zdCBvdGhlciA9ICR2bS5jcmVhdGVHbG9iYWxPYmplY3QoKTsKKyAg
ICBjb25zdCBsYXp5UHJvcGVydHkgPSBvdGhlci5GdW5jdGlvbigicmV0dXJuICR2bS5jcmVhdGVT
dGF0aWNMYXp5UHJvcGVydHkoKSIpKCk7CisgICAgb3RoZXIuaXNFbmFibGVkTGF6eUNhbGxiYWNr
Q3VzdG9tQWNjZXNzb3IgPSB0cnVlOworICAgIG90aGVyLmlzRW5hYmxlZExhenlDYWxsYmFja0Nv
bnN0YW50SW50ZWdlciA9IHRydWU7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5vd25LZXlzKGxhenlQ
cm9wZXJ0eSkuam9pbigpLCAidGVzdExhenlDYWxsYmFja0N1c3RvbUFjY2Vzc29yLHRlc3RMYXp5
Q2FsbGJhY2tDb25zdGFudEludGVnZXIiKTsKK30pKCk7CisKKyhmdW5jdGlvbiBkZWxldGVQcm9w
ZXJ0eSgpIHsKKyAgICBjb25zdCBvdGhlciA9ICR2bS5jcmVhdGVHbG9iYWxPYmplY3QoKTsKKyAg
ICBjb25zdCBsYXp5UHJvcGVydHkgPSBvdGhlci4kdm0uY3JlYXRlU3RhdGljTGF6eVByb3BlcnR5
KCk7CisgICAgb3RoZXIuaXNFbmFibGVkTGF6eUNhbGxiYWNrQWNjZXNzb3IgPSB0cnVlOworICAg
IG90aGVyLmlzRW5hYmxlZExhenlDYWxsYmFja0NvbnN0YW50SW50ZWdlciA9IHRydWU7CisgICAg
c2hvdWxkQmUoZGVsZXRlIGxhenlQcm9wZXJ0eS50ZXN0TGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRl
Z2VyLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZGVsZXRlIGxhenlQcm9wZXJ0eS50ZXN0TGF6eUNh
bGxiYWNrQWNjZXNzb3IsIHRydWUpOworICAgIHNob3VsZEJlKFJlZmxlY3Qub3duS2V5cyhsYXp5
UHJvcGVydHkpLmpvaW4oKSwgInRlc3RMYXp5Q2FsbGJhY2tDb25zdGFudEludGVnZXIiKTsKK30p
KCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9sYXp5LXByb3BlcnR5LWdldC1jYWNoZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9sYXp5LXByb3BlcnR5LWdldC1jYWNoZS5qcwkobm9u
ZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9sYXp5LXByb3BlcnR5LWdldC1jYWNoZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYEJhZCB2YWx1ZTogJHthY3R1YWx9LmApOworfQorCisoZnVuY3Rpb24gbGF6
eUNhbGxiYWNrQWNjZXNzb3IxKCkgeworICAgIGNvbnN0IGxhenlQcm9wZXJ0eSA9ICR2bS5jcmVh
dGVTdGF0aWNMYXp5UHJvcGVydHkoKTsKKworICAgIGNvbnN0IGdldCA9ICgpID0+IGxhenlQcm9w
ZXJ0eS50ZXN0TGF6eUNhbGxiYWNrQWNjZXNzb3I7CisgICAgbm9JbmxpbmUoZ2V0KTsKKworICAg
IGdsb2JhbFRoaXMuaXNFbmFibGVkTGF6eUNhbGxiYWNrQWNjZXNzb3IgPSBmYWxzZTsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICBzaG91bGRCZShnZXQoKSwgdW5k
ZWZpbmVkKTsKKworICAgIGdsb2JhbFRoaXMuaXNFbmFibGVkTGF6eUNhbGxiYWNrQWNjZXNzb3Ig
PSB0cnVlOworICAgIHNob3VsZEJlKGdldCgpLCBsYXp5UHJvcGVydHkpOworfSkoKTsKKworKGZ1
bmN0aW9uIGxhenlDYWxsYmFja0FjY2Vzc29yMigpIHsKKyAgICBjb25zdCBsYXp5UHJvcGVydHkg
PSAkdm0uY3JlYXRlU3RhdGljTGF6eVByb3BlcnR5KCk7CisgICAgT2JqZWN0LnNldFByb3RvdHlw
ZU9mKGxhenlQcm9wZXJ0eSwgeyB0ZXN0TGF6eUNhbGxiYWNrQWNjZXNzb3I6IDIxIH0pOworCisg
ICAgY29uc3QgZ2V0ID0gKCkgPT4gbGF6eVByb3BlcnR5LnRlc3RMYXp5Q2FsbGJhY2tBY2Nlc3Nv
cjsKKyAgICBub0lubGluZShnZXQpOworCisgICAgZ2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5Q2Fs
bGJhY2tBY2Nlc3NvciA9IGZhbHNlOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kp
CisgICAgICAgIHNob3VsZEJlKGdldCgpLCAyMSk7CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxl
ZExhenlDYWxsYmFja0FjY2Vzc29yID0gdHJ1ZTsKKyAgICBzaG91bGRCZShnZXQoKSwgbGF6eVBy
b3BlcnR5KTsKK30pKCk7CisKKyhmdW5jdGlvbiBsYXp5Q2FsbGJhY2tBY2Nlc3NvcjMoKSB7Cisg
ICAgY29uc3QgaGVpciA9IE9iamVjdC5jcmVhdGUoJHZtLmNyZWF0ZVN0YXRpY0xhenlQcm9wZXJ0
eSgpKTsKKworICAgIGNvbnN0IGdldCA9ICgpID0+IGhlaXIudGVzdExhenlDYWxsYmFja0FjY2Vz
c29yOworICAgIG5vSW5saW5lKGdldCk7CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlD
YWxsYmFja0FjY2Vzc29yID0gZmFsc2U7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkKKyAgICAgICAgc2hvdWxkQmUoZ2V0KCksIHVuZGVmaW5lZCk7CisKKyAgICBnbG9iYWxUaGlz
LmlzRW5hYmxlZExhenlDYWxsYmFja0FjY2Vzc29yID0gdHJ1ZTsKKyAgICBzaG91bGRCZShnZXQo
KSwgaGVpcik7Cit9KSgpOworCisKKyhmdW5jdGlvbiBsYXp5Q2FsbGJhY2tDdXN0b21BY2Nlc3Nv
cjEoKSB7CisgICAgY29uc3QgdGVzdEZpZWxkID0ge307CisgICAgY29uc3QgbGF6eVByb3BlcnR5
ID0gJHZtLmNyZWF0ZVN0YXRpY0xhenlQcm9wZXJ0eSgpOworICAgIGxhenlQcm9wZXJ0eS50ZXN0
RmllbGQgPSB0ZXN0RmllbGQ7CisKKyAgICBjb25zdCBnZXQgPSAoKSA9PiBsYXp5UHJvcGVydHku
dGVzdExhenlDYWxsYmFja0N1c3RvbUFjY2Vzc29yOworICAgIG5vSW5saW5lKGdldCk7CisKKyAg
ICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFja0N1c3RvbUFjY2Vzc29yID0gZmFsc2U7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgc2hvdWxkQmUoZ2V0
KCksIHVuZGVmaW5lZCk7CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFja0N1
c3RvbUFjY2Vzc29yID0gdHJ1ZTsKKyAgICBzaG91bGRCZShnZXQoKSwgdGVzdEZpZWxkKTsKK30p
KCk7CisKKyhmdW5jdGlvbiBsYXp5Q2FsbGJhY2tDdXN0b21BY2Nlc3NvcjIoKSB7CisgICAgY29u
c3QgdGVzdEZpZWxkID0ge307CisgICAgY29uc3QgbGF6eVByb3BlcnR5ID0gJHZtLmNyZWF0ZVN0
YXRpY0xhenlQcm9wZXJ0eSgpOworICAgIGxhenlQcm9wZXJ0eS50ZXN0RmllbGQgPSB0ZXN0Rmll
bGQ7CisgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGxhenlQcm9wZXJ0eSwgeyB0ZXN0TGF6eUNh
bGxiYWNrQ3VzdG9tQWNjZXNzb3I6IDIxIH0pOworCisgICAgY29uc3QgZ2V0ID0gKCkgPT4gbGF6
eVByb3BlcnR5LnRlc3RMYXp5Q2FsbGJhY2tDdXN0b21BY2Nlc3NvcjsKKyAgICBub0lubGluZShn
ZXQpOworCisgICAgZ2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5Q2FsbGJhY2tDdXN0b21BY2Nlc3Nv
ciA9IGZhbHNlOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHNo
b3VsZEJlKGdldCgpLCAyMSk7CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFj
a0N1c3RvbUFjY2Vzc29yID0gdHJ1ZTsKKyAgICBzaG91bGRCZShnZXQoKSwgdGVzdEZpZWxkKTsK
K30pKCk7CisKKyhmdW5jdGlvbiBsYXp5Q2FsbGJhY2tDdXN0b21BY2Nlc3NvcjMoKSB7CisgICAg
Y29uc3QgdGVzdEZpZWxkID0ge307CisgICAgY29uc3QgaGVpciA9IE9iamVjdC5jcmVhdGUoJHZt
LmNyZWF0ZVN0YXRpY0xhenlQcm9wZXJ0eSgpKTsKKyAgICBoZWlyLnRlc3RGaWVsZCA9IHRlc3RG
aWVsZDsKKworICAgIGNvbnN0IGdldCA9ICgpID0+IGhlaXIudGVzdExhenlDYWxsYmFja0N1c3Rv
bUFjY2Vzc29yOworICAgIG5vSW5saW5lKGdldCk7CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxl
ZExhenlDYWxsYmFja0N1c3RvbUFjY2Vzc29yID0gZmFsc2U7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgc2hvdWxkQmUoZ2V0KCksIHVuZGVmaW5lZCk7CisKKyAg
ICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFja0N1c3RvbUFjY2Vzc29yID0gdHJ1ZTsK
KyAgICBzaG91bGRCZShnZXQoKSwgdGVzdEZpZWxkKTsKK30pKCk7CisKKworKGZ1bmN0aW9uIGxh
enlDYWxsYmFja0NvbnN0YW50SW50ZWdlcjEoKSB7CisgICAgY29uc3QgbGF6eVByb3BlcnR5ID0g
JHZtLmNyZWF0ZVN0YXRpY0xhenlQcm9wZXJ0eSgpOworCisgICAgY29uc3QgZ2V0ID0gKCkgPT4g
bGF6eVByb3BlcnR5LnRlc3RMYXp5Q2FsbGJhY2tDb25zdGFudEludGVnZXI7CisgICAgbm9Jbmxp
bmUoZ2V0KTsKKworICAgIGdsb2JhbFRoaXMuaXNFbmFibGVkTGF6eUNhbGxiYWNrQ29uc3RhbnRJ
bnRlZ2VyID0gZmFsc2U7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAg
ICAgc2hvdWxkQmUoZ2V0KCksIHVuZGVmaW5lZCk7CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxl
ZExhenlDYWxsYmFja0NvbnN0YW50SW50ZWdlciA9IHRydWU7CisgICAgc2hvdWxkQmUoZ2V0KCks
IDQyKTsKK30pKCk7CisKKyhmdW5jdGlvbiBsYXp5Q2FsbGJhY2tDb25zdGFudEludGVnZXIyKCkg
eworICAgIGNvbnN0IGxhenlQcm9wZXJ0eSA9ICR2bS5jcmVhdGVTdGF0aWNMYXp5UHJvcGVydHko
KTsKKyAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YobGF6eVByb3BlcnR5LCB7IHRlc3RMYXp5Q2Fs
bGJhY2tDb25zdGFudEludGVnZXI6IDIxIH0pOworCisgICAgY29uc3QgZ2V0ID0gKCkgPT4gbGF6
eVByb3BlcnR5LnRlc3RMYXp5Q2FsbGJhY2tDb25zdGFudEludGVnZXI7CisgICAgbm9JbmxpbmUo
Z2V0KTsKKworICAgIGdsb2JhbFRoaXMuaXNFbmFibGVkTGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRl
Z2VyID0gZmFsc2U7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAg
c2hvdWxkQmUoZ2V0KCksIDIxKTsKKworICAgIGdsb2JhbFRoaXMuaXNFbmFibGVkTGF6eUNhbGxi
YWNrQ29uc3RhbnRJbnRlZ2VyID0gdHJ1ZTsKKyAgICBzaG91bGRCZShnZXQoKSwgNDIpOworfSko
KTsKKworKGZ1bmN0aW9uIGxhenlDYWxsYmFja0NvbnN0YW50SW50ZWdlcjMoKSB7CisgICAgY29u
c3QgaGVpciA9IE9iamVjdC5jcmVhdGUoJHZtLmNyZWF0ZVN0YXRpY0xhenlQcm9wZXJ0eSgpKTsK
KworICAgIGNvbnN0IGdldCA9ICgpID0+IGhlaXIudGVzdExhenlDYWxsYmFja0NvbnN0YW50SW50
ZWdlcjsKKyAgICBub0lubGluZShnZXQpOworCisgICAgZ2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5
Q2FsbGJhY2tDb25zdGFudEludGVnZXIgPSBmYWxzZTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDFlNDsgKytpKQorICAgICAgICBzaG91bGRCZShnZXQoKSwgdW5kZWZpbmVkKTsKKworICAgIGds
b2JhbFRoaXMuaXNFbmFibGVkTGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRlZ2VyID0gdHJ1ZTsKKyAg
ICBzaG91bGRCZShnZXQoKSwgNDIpOworfSkoKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2xhenkt
cHJvcGVydHktZ29wZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9sYXp5LXByb3Bl
cnR5LWdvcGQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvbGF6eS1wcm9wZXJ0
eS1nb3BkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBCYWQgdmFsdWU6ICR7YWN0dWFsfS5gKTsKK30KKworKGZ1
bmN0aW9uIGxhenlDYWxsYmFja0FjY2Vzc29yKCkgeworICAgIGNvbnN0IGxhenlQcm9wZXJ0eSA9
ICR2bS5jcmVhdGVTdGF0aWNMYXp5UHJvcGVydHkoKTsKKyAgICBjb25zdCBrZXkgPSAidGVzdExh
enlDYWxsYmFja0FjY2Vzc29yIjsKKworICAgIHNob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IobGF6eVByb3BlcnR5LCBrZXkpLCB1bmRlZmluZWQpOworICAgIGdsb2JhbFRo
aXMuaXNFbmFibGVkTGF6eUNhbGxiYWNrQWNjZXNzb3IgPSB0cnVlOworCisgICAgY29uc3QgZGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobGF6eVByb3BlcnR5LCBrZXkpOwor
ICAgIHNob3VsZEJlKHR5cGVvZiBkZXNjLmdldCwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmUo
ZGVzYy5zZXQsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoZGVzYy5lbnVtZXJhYmxlLCB0cnVl
KTsKKyAgICBzaG91bGRCZShkZXNjLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Cit9KSgpOworCisoZnVu
Y3Rpb24gbGF6eUNhbGxiYWNrQ3VzdG9tQWNjZXNzb3IoKSB7CisgICAgY29uc3QgbGF6eVByb3Bl
cnR5ID0gJHZtLmNyZWF0ZVN0YXRpY0xhenlQcm9wZXJ0eSgpOworICAgIGNvbnN0IGtleSA9ICJ0
ZXN0TGF6eUNhbGxiYWNrQ3VzdG9tQWNjZXNzb3IiOworCisgICAgc2hvdWxkQmUoT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihsYXp5UHJvcGVydHksIGtleSksIHVuZGVmaW5lZCk7Cisg
ICAgZ2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5Q2FsbGJhY2tDdXN0b21BY2Nlc3NvciA9IHRydWU7
CisKKyAgICBjb25zdCBkZXNjMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobGF6
eVByb3BlcnR5LCBrZXkpOworICAgIHNob3VsZEJlKHR5cGVvZiBkZXNjMS5nZXQsICJmdW5jdGlv
biIpOworICAgIHNob3VsZEJlKHR5cGVvZiBkZXNjMS5zZXQsICJmdW5jdGlvbiIpOworICAgIHNo
b3VsZEJlKGRlc2MxLmVudW1lcmFibGUsIHRydWUpOworICAgIHNob3VsZEJlKGRlc2MxLmNvbmZp
Z3VyYWJsZSwgdHJ1ZSk7CisKKyAgICBjb25zdCBkZXNjMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IobGF6eVByb3BlcnR5LCBrZXkpOworICAgIHNob3VsZEJlKGRlc2MyLmdldCwg
ZGVzYzEuZ2V0KTsKKyAgICBzaG91bGRCZShkZXNjMi5zZXQsIGRlc2MxLnNldCk7Cit9KSgpOwor
CisoZnVuY3Rpb24gbGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRlZ2VyKCkgeworICAgIGNvbnN0IGxh
enlQcm9wZXJ0eSA9ICR2bS5jcmVhdGVTdGF0aWNMYXp5UHJvcGVydHkoKTsKKyAgICBjb25zdCBr
ZXkgPSAidGVzdExhenlDYWxsYmFja0NvbnN0YW50SW50ZWdlciI7CisKKyAgICBzaG91bGRCZShP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGxhenlQcm9wZXJ0eSwga2V5KSwgdW5kZWZp
bmVkKTsKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFja0NvbnN0YW50SW50ZWdl
ciA9IHRydWU7CisKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihsYXp5UHJvcGVydHksIGtleSk7CisgICAgc2hvdWxkQmUoZGVzYy52YWx1ZSwgNDIpOwor
ICAgIHNob3VsZEJlKGRlc2Mud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShkZXNjLmVu
dW1lcmFibGUsIHRydWUpOworICAgIHNob3VsZEJlKGRlc2MuY29uZmlndXJhYmxlLCBmYWxzZSk7
Cit9KSgpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvbGF6eS1wcm9wZXJ0eS1oYXNvd25wcm9wZXJ0
eS1jYWNoZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9sYXp5LXByb3BlcnR5LWhh
c293bnByb3BlcnR5LWNhY2hlLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2xh
enktcHJvcGVydHktaGFzb3ducHJvcGVydHktY2FjaGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCB2YWx1
ZTogJHthY3R1YWx9LmApOworfQorCisoZnVuY3Rpb24gbGF6eUNhbGxiYWNrQWNjZXNzb3IoKSB7
CisgICAgY29uc3QgbGF6eVByb3BlcnR5ID0gJHZtLmNyZWF0ZVN0YXRpY0xhenlQcm9wZXJ0eSgp
OworICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihsYXp5UHJvcGVydHksIE9iamVjdC5wcm90b3R5
cGUpOworCisgICAgZ2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5Q2FsbGJhY2tDb25zdGFudEludGVn
ZXIgPSBmYWxzZTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICBz
aG91bGRCZShsYXp5UHJvcGVydHkuaGFzT3duUHJvcGVydHkoInRlc3RMYXp5Q2FsbGJhY2tDb25z
dGFudEludGVnZXIiKSwgZmFsc2UpOworCisgICAgZ2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5Q2Fs
bGJhY2tDb25zdGFudEludGVnZXIgPSB0cnVlOworICAgIHNob3VsZEJlKGxhenlQcm9wZXJ0eS5o
YXNPd25Qcm9wZXJ0eSgidGVzdExhenlDYWxsYmFja0NvbnN0YW50SW50ZWdlciIpLCB0cnVlKTsK
K30pKCk7CisKKyhmdW5jdGlvbiBsYXp5Q2FsbGJhY2tDdXN0b21BY2Nlc3NvcigpIHsKKyAgICBj
b25zdCBsYXp5UHJvcGVydHkgPSAkdm0uY3JlYXRlU3RhdGljTGF6eVByb3BlcnR5KCk7CisgICAg
T2JqZWN0LnNldFByb3RvdHlwZU9mKGxhenlQcm9wZXJ0eSwgT2JqZWN0LnByb3RvdHlwZSk7CisK
KyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFja0NvbnN0YW50SW50ZWdlciA9IGZh
bHNlOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHNob3VsZEJl
KGxhenlQcm9wZXJ0eS5oYXNPd25Qcm9wZXJ0eSgidGVzdExhenlDYWxsYmFja0NvbnN0YW50SW50
ZWdlciIpLCBmYWxzZSk7CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFja0Nv
bnN0YW50SW50ZWdlciA9IHRydWU7CisgICAgc2hvdWxkQmUobGF6eVByb3BlcnR5Lmhhc093blBy
b3BlcnR5KCJ0ZXN0TGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRlZ2VyIiksIHRydWUpOworfSkoKTsK
KworKGZ1bmN0aW9uIGxhenlDYWxsYmFja0NvbnN0YW50SW50ZWdlcigpIHsKKyAgICBjb25zdCBs
YXp5UHJvcGVydHkgPSAkdm0uY3JlYXRlU3RhdGljTGF6eVByb3BlcnR5KCk7CisgICAgT2JqZWN0
LnNldFByb3RvdHlwZU9mKGxhenlQcm9wZXJ0eSwgT2JqZWN0LnByb3RvdHlwZSk7CisKKyAgICBn
bG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFja0NvbnN0YW50SW50ZWdlciA9IGZhbHNlOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHNob3VsZEJlKGxhenlQ
cm9wZXJ0eS5oYXNPd25Qcm9wZXJ0eSgidGVzdExhenlDYWxsYmFja0NvbnN0YW50SW50ZWdlciIp
LCBmYWxzZSk7CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFja0NvbnN0YW50
SW50ZWdlciA9IHRydWU7CisgICAgc2hvdWxkQmUobGF6eVByb3BlcnR5Lmhhc093blByb3BlcnR5
KCJ0ZXN0TGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRlZ2VyIiksIHRydWUpOworfSkoKTsKSW5kZXg6
IEpTVGVzdHMvc3RyZXNzL2xhenktcHJvcGVydHktcHV0LWNhY2hlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvc3RyZXNzL2xhenktcHJvcGVydHktcHV0LWNhY2hlLmpzCShub25leGlzdGVudCkK
KysrIEpTVGVzdHMvc3RyZXNzL2xhenktcHJvcGVydHktcHV0LWNhY2hlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTU4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgQmFkIHZhbHVlOiAke2FjdHVhbH0uYCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1
bmMsIGVycm9yTWVzc2FnZSkgeworICAgIGxldCBlcnJvclRocm93biA9IGZhbHNlOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGlmIChlcnJvci50b1N0cmluZygpICE9PSBlcnJvck1l
c3NhZ2UpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCBlcnJvcjogJHtlcnJvcn1g
KTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJEaWRuJ3QgdGhyb3chIik7Cit9CisKKyhmdW5jdGlvbiBsYXp5Q2FsbGJhY2tBY2Nlc3NvcjEo
KSB7CisgICAgY29uc3QgbGF6eVByb3BlcnR5ID0gJHZtLmNyZWF0ZVN0YXRpY0xhenlQcm9wZXJ0
eSgpOworCisgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGxhenlQcm9wZXJ0eSwgT2JqZWN0LmNy
ZWF0ZShudWxsLCB7CisgICAgICAgIHRlc3RMYXp5Q2FsbGJhY2tBY2Nlc3NvcjogT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcigkdm0uY3JlYXRlQ3VzdG9tVGVzdEdldHRlclNldHRlcigp
LCAiY3VzdG9tQWNjZXNzb3IiKSwKKyAgICB9KSk7CisKKyAgICBmdW5jdGlvbiBwdXRTdHJpY3Qo
dmFsKSB7ICJ1c2Ugc3RyaWN0IjsgbGF6eVByb3BlcnR5LnRlc3RMYXp5Q2FsbGJhY2tBY2Nlc3Nv
ciA9IHZhbDsgfTsKKyAgICBub0lubGluZShwdXRTdHJpY3QpOworCisgICAgZ2xvYmFsVGhpcy5p
c0VuYWJsZWRMYXp5Q2FsbGJhY2tBY2Nlc3NvciA9IGZhbHNlOworICAgIGZvciAobGV0IGkgPSAx
OyBpIDw9IDFlNDsgKytpKSB7CisgICAgICAgIGNvbnN0IHZhbHVlID0ge307CisgICAgICAgIHB1
dFN0cmljdCh2YWx1ZSk7CisgICAgICAgIHNob3VsZEJlKHZhbHVlLnJlc3VsdCwgbGF6eVByb3Bl
cnR5KTsKKyAgICB9CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFja0FjY2Vz
c29yID0gdHJ1ZTsKKyAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgIHNob3VsZFRocm93KCgpID0+
IHsgcHV0U3RyaWN0KHt9KTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byBy
ZWFkb25seSBwcm9wZXJ0eS4iKTsKKyAgICBzaG91bGRCZSh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgi
dmFsdWUiKSwgZmFsc2UpOworfSkoKTsKKworKGZ1bmN0aW9uIGxhenlDYWxsYmFja0FjY2Vzc29y
MigpIHsKKyAgICBjb25zdCBsYXp5UHJvcGVydHkgPSAkdm0uY3JlYXRlU3RhdGljTGF6eVByb3Bl
cnR5KCk7CisgICAgY29uc3QgaGVpciA9IE9iamVjdC5jcmVhdGUobGF6eVByb3BlcnR5KTsKKwor
ICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihsYXp5UHJvcGVydHksIE9iamVjdC5jcmVhdGUobnVs
bCwgeworICAgICAgICB0ZXN0TGF6eUNhbGxiYWNrQWNjZXNzb3I6IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoJHZtLmNyZWF0ZVN0YXRpY0N1c3RvbUFjY2Vzc29yKCksICJ0ZXN0U3Rh
dGljQWNjZXNzb3IiKSwKKyAgICB9KSk7CisKKyAgICBmdW5jdGlvbiBwdXRUb0hlaXJTbG9wcHko
dmFsKSB7IGhlaXIudGVzdExhenlDYWxsYmFja0FjY2Vzc29yID0gdmFsOyB9OworICAgIG5vSW5s
aW5lKHB1dFRvSGVpclNsb3BweSk7CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxs
YmFja0FjY2Vzc29yID0gZmFsc2U7CisgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMWU0OyArK2kp
IHsKKyAgICAgICAgcHV0VG9IZWlyU2xvcHB5KGkpOworICAgICAgICBzaG91bGRCZShoZWlyLnRl
c3RGaWVsZCwgaSk7CisgICAgfQorCisgICAgZ2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5Q2FsbGJh
Y2tBY2Nlc3NvciA9IHRydWU7CisgICAgcHV0VG9IZWlyU2xvcHB5KDQyKTsKKyAgICBzaG91bGRC
ZShoZWlyLnRlc3RGaWVsZCwgMWU0KTsKK30pKCk7CisKKworKGZ1bmN0aW9uIGxhenlDYWxsYmFj
a0N1c3RvbUFjY2Vzc29yMSgpIHsKKyAgICBjb25zdCBsYXp5UHJvcGVydHkgPSAkdm0uY3JlYXRl
U3RhdGljTGF6eVByb3BlcnR5KCk7CisKKyAgICBsZXQgbGFzdFNldFZhbHVlOworICAgIE9iamVj
dC5zZXRQcm90b3R5cGVPZihsYXp5UHJvcGVydHksIHsKKyAgICAgICAgc2V0IHRlc3RMYXp5Q2Fs
bGJhY2tDdXN0b21BY2Nlc3Nvcih2YWwpIHsgbGFzdFNldFZhbHVlID0gdmFsOyB9LAorICAgIH0p
OworCisgICAgZnVuY3Rpb24gcHV0U3RyaWN0KHZhbCkgeyAidXNlIHN0cmljdCI7IGxhenlQcm9w
ZXJ0eS50ZXN0TGF6eUNhbGxiYWNrQ3VzdG9tQWNjZXNzb3IgPSB2YWw7IH07CisgICAgbm9Jbmxp
bmUocHV0U3RyaWN0KTsKKworICAgIGdsb2JhbFRoaXMuaXNFbmFibGVkTGF6eUNhbGxiYWNrQ3Vz
dG9tQWNjZXNzb3IgPSBmYWxzZTsKKyAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxZTQ7ICsraSkg
eworICAgICAgICBwdXRTdHJpY3QoaSk7CisgICAgICAgIHNob3VsZEJlKGxhc3RTZXRWYWx1ZSwg
aSk7CisgICAgfQorCisgICAgZ2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5Q2FsbGJhY2tDdXN0b21B
Y2Nlc3NvciA9IHRydWU7CisgICAgc2hvdWxkQmUobGF6eVByb3BlcnR5LnRlc3RGaWVsZCwgdW5k
ZWZpbmVkKTsKKyAgICBwdXRTdHJpY3QoNDIpOworICAgIHNob3VsZEJlKGxhenlQcm9wZXJ0eS50
ZXN0RmllbGQsIDQyKTsKK30pKCk7CisKKyhmdW5jdGlvbiBsYXp5Q2FsbGJhY2tDdXN0b21BY2Nl
c3NvcjIoKSB7CisgICAgY29uc3QgbGF6eVByb3BlcnR5ID0gJHZtLmNyZWF0ZVN0YXRpY0xhenlQ
cm9wZXJ0eSgpOworICAgIGNvbnN0IGhlaXIgPSBPYmplY3QuY3JlYXRlKGxhenlQcm9wZXJ0eSk7
CisKKyAgICBsZXQgbGFzdFNldFZhbHVlOworICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihsYXp5
UHJvcGVydHksIHsKKyAgICAgICAgZ2V0IHRlc3RMYXp5Q2FsbGJhY2tDdXN0b21BY2Nlc3Nvcigp
IHt9LAorICAgICAgICBzZXQgdGVzdExhenlDYWxsYmFja0N1c3RvbUFjY2Vzc29yKHZhbCkgeyBs
YXN0U2V0VmFsdWUgPSB2YWw7IH0sCisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBwdXRUb0hlaXJT
bG9wcHkodmFsKSB7ICJ1c2Ugc3RyaWN0IjsgaGVpci50ZXN0TGF6eUNhbGxiYWNrQ3VzdG9tQWNj
ZXNzb3IgPSB2YWw7IH07CisgICAgbm9JbmxpbmUocHV0VG9IZWlyU2xvcHB5KTsKKworICAgIGds
b2JhbFRoaXMuaXNFbmFibGVkTGF6eUNhbGxiYWNrQ3VzdG9tQWNjZXNzb3IgPSBmYWxzZTsKKyAg
ICBmb3IgKGxldCBpID0gMTsgaSA8PSAxZTQ7ICsraSkgeworICAgICAgICBwdXRUb0hlaXJTbG9w
cHkoaSk7CisgICAgICAgIHNob3VsZEJlKGxhc3RTZXRWYWx1ZSwgaSk7CisgICAgfQorCisgICAg
Z2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5Q2FsbGJhY2tDdXN0b21BY2Nlc3NvciA9IHRydWU7Cisg
ICAgc2hvdWxkQmUoaGVpci50ZXN0RmllbGQsIHVuZGVmaW5lZCk7CisgICAgcHV0VG9IZWlyU2xv
cHB5KDQyKTsKKyAgICBzaG91bGRCZShoZWlyLnRlc3RGaWVsZCwgNDIpOworfSkoKTsKKworCiso
ZnVuY3Rpb24gbGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRlZ2VyMSgpIHsKKyAgICBjb25zdCBsYXp5
UHJvcGVydHkgPSAkdm0uY3JlYXRlU3RhdGljTGF6eVByb3BlcnR5KCk7CisKKyAgICBsZXQgbGFz
dFNldFZhbHVlID0gMDsKKyAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YobGF6eVByb3BlcnR5LCB7
CisgICAgICAgIGdldCB0ZXN0TGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRlZ2VyKCkge30sCisgICAg
ICAgIHNldCB0ZXN0TGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRlZ2VyKHZhbCkgeyBsYXN0U2V0VmFs
dWUgPSB2YWw7IH0sCisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBwdXRTbG9wcHkodmFsKSB7IGxh
enlQcm9wZXJ0eS50ZXN0TGF6eUNhbGxiYWNrQ29uc3RhbnRJbnRlZ2VyID0gdmFsOyB9OworICAg
IG5vSW5saW5lKHB1dFNsb3BweSk7CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxs
YmFja0NvbnN0YW50SW50ZWdlciA9IGZhbHNlOworICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDFl
NDsgKytpKSB7CisgICAgICAgIHB1dFNsb3BweShpKTsKKyAgICAgICAgc2hvdWxkQmUobGFzdFNl
dFZhbHVlLCBpKTsKKyAgICB9CisKKyAgICBnbG9iYWxUaGlzLmlzRW5hYmxlZExhenlDYWxsYmFj
a0NvbnN0YW50SW50ZWdlciA9IHRydWU7CisgICAgcHV0U2xvcHB5KDQyKTsKKyAgICBzaG91bGRC
ZShsYXN0U2V0VmFsdWUsIDFlNCk7Cit9KSgpOworCisoZnVuY3Rpb24gbGF6eUNhbGxiYWNrQ29u
c3RhbnRJbnRlZ2VyMigpIHsKKyAgICBjb25zdCBsYXp5UHJvcGVydHkgPSAkdm0uY3JlYXRlU3Rh
dGljTGF6eVByb3BlcnR5KCk7CisgICAgY29uc3QgaGVpciA9IE9iamVjdC5jcmVhdGUobGF6eVBy
b3BlcnR5KTsKKworICAgIGxldCBsYXN0U2V0VmFsdWUgPSAwOworICAgIE9iamVjdC5zZXRQcm90
b3R5cGVPZihsYXp5UHJvcGVydHksIHsKKyAgICAgICAgc2V0IHRlc3RMYXp5Q2FsbGJhY2tDb25z
dGFudEludGVnZXIodmFsKSB7IGxhc3RTZXRWYWx1ZSA9IHZhbDsgfSwKKyAgICB9KTsKKworICAg
IGZ1bmN0aW9uIHB1dFRvSGVpclN0cmljdCh2YWwpIHsgInVzZSBzdHJpY3QiOyBoZWlyLnRlc3RM
YXp5Q2FsbGJhY2tDb25zdGFudEludGVnZXIgPSB2YWw7IH0KKyAgICBub0lubGluZShwdXRUb0hl
aXJTdHJpY3QpOworCisgICAgZ2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5Q2FsbGJhY2tDb25zdGFu
dEludGVnZXIgPSBmYWxzZTsKKyAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxZTQ7ICsraSkgewor
ICAgICAgICBwdXRUb0hlaXJTdHJpY3QoaSk7CisgICAgICAgIHNob3VsZEJlKGxhc3RTZXRWYWx1
ZSwgaSk7CisgICAgfQorCisgICAgZ2xvYmFsVGhpcy5pc0VuYWJsZWRMYXp5Q2FsbGJhY2tDb25z
dGFudEludGVnZXIgPSB0cnVlOworICAgIHNob3VsZFRocm93KCgpID0+IHsgcHV0VG9IZWlyU3Ry
aWN0KDQyKTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4iKTsKKyAgICBzaG91bGRCZShsYXN0U2V0VmFsdWUsIDFlNCk7Cit9KSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzYgQEAKKzIw
MjEtMDctMDIgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIFtXZWJJRExdIFJld29yayBydW50aW1lIGVuYWJsZWQgcHJvcGVydGllcyBsZXZlcmFnaW5n
IFByb3BlcnR5Q2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNzI3NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisg
ICAgICAgIFRvIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIFdlYklETCBydW50aW1lIGVuYWJs
ZWQgcHJvcGVydGllcyBpbmRlcGVuZGVudCBvZiBlYWdlcgorICAgICAgICBwcm9wZXJ0eSByZWlm
aWNhdGlvbiwgdGhpcyBjaGFuZ2U6CisKKyAgICAgICAgMS4gSW50cm9kdWNlcyBJc0xhenlQcm9w
ZXJ0eUVuYWJsZWRDYWxsYmFjaywgd2hpY2ggaXMgbmVlZGVkIHNlcGFyYXRlbHkgZnJvbSBleGlz
dGluZworICAgICAgICAgICB2YWx1ZSBjYWxsYmFjayB0byBtYWludGFpbiB0aGUgaW52YXJpYW50
IHRoYXQgcmVpZnlTdGF0aWNQcm9wZXJ0eSgpIGFsd2F5cyBwdXRzIGEKKyAgICAgICAgICAgcHJv
cGVydHksIGFuZCB0byBrZWVwIGVudW1lcmF0aW9uIGZhc3QuCisKKyAgICAgICAgICAgQ2FsbGlu
ZyBkaXNhYmxlQ2FjaGluZygpIGlzbid0IGVub3VnaCB0byBhY2hpZXZlIGNvcnJlY3QgW1tHZXRd
XSBpbmxpbmUgY2FjaGluZywKKyAgICAgICAgICAgc28gaXNUYWludGVkQnlPcGFxdWVPYmplY3Qo
KSBpcyBsZXZlcmFnZWQgdG8gcHJvaGliaXQgY2FjaGluZyBvZiBydW50aW1lIGRpc2FibGVkCisg
ICAgICAgICAgIHByb3BlcnRpZXMsIGp1c3QgbGlrZSBpbiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0
aW1pemUoKS4KKworICAgICAgICAgICBUaGUgb25seSBjYXNlIHRoYXQgbWlnaHQgc2VlbSB3ZWly
ZCBpcyBydW50aW1lIGRpc2FibGVkIHByb3BlcnRpZXMsIHdoaWNoIHdlcmUKKyAgICAgICAgICAg
ZW5hYmxlZCBhZnRlciBhbGwgc3RhdGljIHByb3BlcnRpZXMgd2VyZSByZWlmaWVkIHZpYSBbW0Rl
bGV0ZV1dLCBhcmUgbm90IGFwcGVhcmluZy4KKyAgICAgICAgICAgSXQncyBmaXhhYmxlLCB5ZXQg
dGhlcmUgaXMgY3VycmVudGx5IG5vIGRlbWFuZCBmb3IgaXQuCisKKyAgICAgICAgMi4gQWRkcyBz
dXBwb3J0IGZvciBMYXp5UHJvcGVydHlDYWxsYmFjayByZXR1cm5pbmcgR2V0dGVyU2V0dGVyIC8g
Q3VzdG9tR2V0dGVyU2V0dGVyLAorICAgICAgICAgICBlbnN1cmluZyBjb3JyZWN0IHN0cnVjdHVy
ZSBmbGFncyBhbmQgc2xvdCBpbml0aWFsaXphdGlvbi4gUHJldmlvdXNseSwgdGhlIGNhbGxiYWNr
CisgICAgICAgICAgIHdhcyB1c2VkIHRvIGluaXQgb25seSBvYmplY3RzIGFuZCBjb25zdHJ1Y3Rv
cnMsIHVzaW5nIHB1dERpcmVjdCgpIHVuY29uZGl0aW9uYWxseS4KKworICAgICAgICAgICBUbyBh
dm9pZCBtaXhpbmcgb3RoZXIgbm9uLWJhc2ljIGF0dHJpYnV0ZXMgd2l0aCBQcm9wZXJ0eUNhbGxi
YWNrLCB3aGljaCB3b3VsZCByZXF1aXJlCisgICAgICAgICAgIGhvaXN0aW5nIG9mIGNoZWNrcyBh
Z2FpbnN0IFByb3BlcnR5Q2FsbGJhY2sgYW5kIGNvbXBsaWNhdGluZyBhdHRyaWJ1dGUgdmFsaWRh
dGlvbiBpbgorICAgICAgICAgICBIYXNoVGFibGVWYWx1ZSBtZXRob2RzLCB0aGlzIHBhdGNoIGNo
ZWNrcyB0aGUgdHlwZSBvZiBjYWxsYmFjaydzIHJldHVybiB2YWx1ZSBpbnN0ZWFkLgorCisgICAg
ICAgICAgIEluIHRoZSBmdXR1cmUsIHN0aWNraW5nIHRvIHRoaXMgYXBwcm9hY2ggd2lsbCBtYWtl
IHJldHVybmluZyBDdXN0b21WYWx1ZSBpbXBvc3NpYmxlCisgICAgICAgICAgIGFzIGl0IGNhbid0
IGJlIGRpc3Rpbmd1aXNoZWQgZnJvbSBDdXN0b21BY2Nlc3Nvci4gVGhhdCdzIGZpbmUgYmVjYXVz
ZSBhbGwgcHJlc2VudAorICAgICAgICAgICBDdXN0b21WYWx1ZSB1c2FnZXMgbWVyZWx5IGRvIGxh
enkgaW5pdCwgd2hpY2ggUHJvcGVydHlDYWxsYmFjayBpcyBiZXR0ZXIgc3VpdGVkIGZvci4KKwor
ICAgICAgICBBbHNvLCB0aGlzIHBhdGNoOgorCisgICAgICAgIDMuIEV4cGFuZHMgc2V0VXBTdGF0
aWNGdW5jdGlvblNsb3QoKSB0byBoYW5kbGUgY29uc3RhbnQgaW50ZWdlcnMgc28gdGhlIGNvZGUg
dXNpbmcKKyAgICAgICAgICAgYE5vZGUuRUxFTUVOVF9OT0RFYCAmIGZyaWVuZHMgZG9lc24ndCBy
ZWdyZXNzIChwcm92ZW4gYnkgYXR0YWNoZWQgbWljcm9iZW5jaG1hcmspLgorCisgICAgICAgIDQu
IFJlbW92ZXMgZXh0cmEgY2hlY2tzIGZyb20gc2V0VXBTdGF0aWNQcm9wZXJ0eVNsb3QoKSwgd2hp
Y2ggaXMgY2FsbGVkIG9ubHkgb24KKyAgICAgICAgICAgbm9uLXJlaWZpZWQgcHJvcGVydGllcy4K
KworICAgICAgICA1LiBSZW1vdmVzIGludmFyaWFudCB0aGF0IERPTUpJVEF0dHJpYnV0ZSBwcm9w
ZXJ0eSBpcyByZWFkLW9ubHksIHdoaWNoIHdhcyBicm9rZW4KKyAgICAgICAgICAgYnkgYGRvY3Vt
ZW50LmJvZHlgIGhhdmluZyBhIG5vbi1KSVQgY3VzdG9tIHNldHRlci4gVGhpcyBhbGlnbnMgbm9u
LXJlaWZpZWQKKyAgICAgICAgICAgcHJvcGVydGllcyB3aXRoIHN0cnVjdHVyZSBvbmVzLgorCisg
ICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToK
KyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAgICogcnVudGltZS9IYXNPd25Q
cm9wZXJ0eUNhY2hlLmg6CisgICAgICAgIChKU0M6Okhhc093blByb3BlcnR5Q2FjaGU6OnRyeUFk
ZCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6Omxvb2t1
cFByb3BlcnR5Rm9yUHV0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZVNsb3cp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaWxsU3Ry
dWN0dXJlUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0Tm9uUmVpZmllZFN0YXRpY1Byb3BlcnR5TmFt
ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0VXBT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1bmN0aW9uU2xv
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaFRhYmxlVmFsdWU6OmlzTGF6eVByb3BlcnR5RW5hYmxlZCBjb25zdCk6CisgICAgICAgIChK
U0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdEZyb21UYWJsZSk6CisgICAgICAgIChKU0M6OnJlaWZ5
U3RhdGljUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3BlcnRpZXMpOgor
ICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlv
bik6CisKIDIwMjEtMDctMDEgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBjYW5CZUludGVybmFsIGludm9jYXRpb25zIHRv
IG1pdGlnYXRlIHRoZSBjb3N0IG9mIHBvdGVudGlhbCB1bm1hdGNoZWQgcGF0dGVybnMgaW4gQjNM
b3dlclRvQWlyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlz
aW9uIDI3OTUwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxOSw3ICszMTksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVHZXRCeShKCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChzbG90Lmlz
VW5zZXQoKSB8fCBzbG90LnNsb3RCYXNlKCkgIT0gYmFzZVZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkK
KyAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3Bl
cnR5Q2FjaGluZygpIHx8IHNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MDcsNyArNzA3LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2Fj
aGUoSgogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2
bSk7CiAKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2Fj
aGluZygpKQorICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nKCkgfHwgc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgaWYgKHN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2lu
dCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc093
blByb3BlcnR5Q2FjaGUuaAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3
ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKLSAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgaWYg
KCEoc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpIHx8IHNs
b3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkKICAgICAgICAgICAgICYmIHN0cnVjdHVyZS0+
cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpCiAgICAgICAgICAgICAmJiAoIXNsb3QuaXNV
bnNldCgpIHx8IHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZUZvckFic2Vu
Y2UoKSkpIHsKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lv
biAyNzk1MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc2MCw2ICs3NjAsNTYgQEAgYm9vbCBKU09iamVjdDo6cHV0KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYQogICAgIHJldHVybiBwdXRJbmxpbmVGb3JKU09iamVjdChjZWxs
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCitzdHJ1Y3Qg
UHJvcGVydHlGb3JQdXQgeworICAgIGNvbnN0IHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgY29u
c3QgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIGNvbnN0IFB1dFZhbHVlRnVuYyBjdXN0b21T
ZXR0ZXI7Cit9OworCitzdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPFByb3BlcnR5
Rm9yUHV0PiBsb29rdXBQcm9wZXJ0eUZvclB1dChWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgUHV0VmFsdWVGdW5jIGN1c3RvbVNldHRlciA9IG51bGxwdHI7
CisgICAgYXV0byBnZXRGcm9tU3RydWN0dXJlID0gWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkg
LT4gc3RkOjpvcHRpb25hbDxQcm9wZXJ0eUZvclB1dD4geworICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2
bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCisg
ICAgICAgICAgICBjdXN0b21TZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4ob2Jq
ZWN0LT5nZXREaXJlY3Qob2Zmc2V0KSktPnNldHRlcigpOworICAgICAgICByZXR1cm4gUHJvcGVy
dHlGb3JQdXQgeyBhdHRyaWJ1dGVzLCBvZmZzZXQsIGN1c3RvbVNldHRlciB9OworICAgIH07CisK
KyAgICBpZiAoYXV0byBwcm9wZXJ0eSA9IGdldEZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKSkKKyAg
ICAgICAgcmV0dXJuIHByb3BlcnR5OworCisgICAgaWYgKHN0cnVjdHVyZS0+aGFzTm9uUmVpZmll
ZFN0YXRpY1Byb3BlcnRpZXMoKSkgeworICAgICAgICBpZiAoYXV0byBlbnRyeSA9IHN0cnVjdHVy
ZS0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXMgPSBlbnRyeS0+dmFsdWUtPmF0dHJpYnV0ZXMoKTsKKworICAgICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFj
aykgeworICAgICAgICAgICAgICAgIHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWVudHJ5LT52YWx1ZS0+aXNMYXp5UHJvcGVydHlFbmFibGVkKG9iamVjdC0+Z2xv
YmFsT2JqZWN0KHZtKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgZW50cnktPnRhYmxlLT5j
bGFzc0ZvclRoaXMsIHByb3BlcnR5TmFtZSwgKmVudHJ5LT52YWx1ZSwgKm9iamVjdCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdldEZyb21TdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0p
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IGNyZWF0ZV9oYXNoX3Rh
YmxlIHNob3VsZCBzZXQgUmVhZE9ubHkgYXR0cmlidXRlIGZvciBzZXR0ZXItbGVzcyBhY2Nlc3Nv
cnMuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1OTk3CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpBY2Nlc3NvcikKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhZnRlciB3
ZSBzdG9wIGRlZmF1bHRpbmcgdG8gQ3VzdG9tVmFsdWUgaW4gc3RhdGljIGhhc2ggdGFibGVzLgor
ICAgICAgICAgICAgaWYgKCEoYXR0cmlidXRlcyAmIChQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29y
T3JMYXp5UHJvcGVydHlPckNvbnN0YW50KSkpCisgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8
PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWU7CisgICAgICAgICAgICBpZiAoYXR0cmli
dXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCisgICAgICAg
ICAgICAgICAgY3VzdG9tU2V0dGVyID0gZW50cnktPnZhbHVlLT5wcm9wZXJ0eVB1dHRlcigpOwor
ICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5Rm9yUHV0IHsgYXR0cmlidXRlcywgaW52YWxpZE9m
ZnNldCwgY3VzdG9tU2V0dGVyIH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworfQorCiBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQoIXBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSk7CkBAIC03NzgsMzUgKzgyOCwxMiBAQCBib29sIEpTT2JqZWN0OjpwdXRJbmxp
bmVTbG93KEpTR2xvYmFsT2JqCiAgICAgICAgIGlmIChvYmogIT0gdGhpcyAmJiBzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzUHV0KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIG9iai0+bWV0aG9kVGFibGUodm0pLT5wdXQob2JqLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIAotICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0g
ZmFsc2U7Ci0gICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgICAgIFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jIGN1c3RvbVNldHRlciA9IG51bGxwdHI7Ci0gICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMpOwotICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAg
ICBoYXNQcm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCi0gICAgICAgICAgICAgICAgY3Vz
dG9tU2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KG9iai0+Z2V0RGlyZWN0KG9m
ZnNldCkpLT5zZXR0ZXIoKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUtPmhhc05vblJl
aWZpZWRTdGF0aWNQcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGVudHJ5ID0g
c3RydWN0dXJlLT5maW5kUHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1lKSkgewotICAgICAg
ICAgICAgICAgIGhhc1Byb3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVz
ID0gZW50cnktPnZhbHVlLT5hdHRyaWJ1dGVzKCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgYWZ0ZXIgd3JpdGFibGUgYWNjZXNzb3JzIGFyZSBpbnRyb2R1Y2VkIHRv
IHN0YXRpYyBoYXNoIHRhYmxlcy4KLSAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFBy
b3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikKLSAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
cyB8PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7Ci0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIGFmdGVyIHdlIHN0b3AgZGVmYXVsdGluZyB0byBDdXN0b21WYWx1ZSBp
biBzdGF0aWMgaGFzaCB0YWJsZXMuCi0gICAgICAgICAgICAgICAgaWYgKCEoYXR0cmlidXRlcyAm
IChQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
QnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50KSkpCi0g
ICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bVZhbHVlOwotCi0gICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3JPclZhbHVlKQotICAgICAgICAgICAgICAgICAgICBjdXN0b21T
ZXR0ZXIgPSBlbnRyeS0+dmFsdWUtPnByb3BlcnR5UHV0dGVyKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoaGFzUHJvcGVydHkpIHsKKyAgICAgICAgaWYgKGF1dG8g
cHJvcGVydHkgPSBsb29rdXBQcm9wZXJ0eUZvclB1dCh2bSwgb2JqLCBzdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSBwcm9w
ZXJ0eS0+YXR0cmlidXRlczsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KQogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdy
aXRlRXJyb3IpOwogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0
ZTo6QWNjZXNzb3IpIHsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBw
cm9wZXJ0eS0+b2Zmc2V0OwogICAgICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9m
ZnNldCkpOwogICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2Ug
ZGVjaWRlIHRvIGNhY2hlIHRoaXMgcHJvcGVydHkgYmVmb3JlIHdlIHBvdGVudGlhbGx5IGV4ZWN1
dGUgYXJpYml0cmFyeSBKUy4KICAgICAgICAgICAgICAgICBpZiAoIXRoaXMtPnN0cnVjdHVyZSh2
bSktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCkBAIC04MTQsOSArODQxLDcgQEAgYm9vbCBK
U09iamVjdDo6cHV0SW5saW5lU2xvdyhKU0dsb2JhbE9iagogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwganNDYXN0PEdldHRlclNldHRlcio+KG9iai0+Z2V0RGlyZWN0
KG9mZnNldCkpLT5jYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50aGlzVmFsdWUoKSwgdmFs
dWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSB7Ci0gICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFmdGVyIFdlYklETCBnZW5lcmF0b3Ig
aXMgZml4ZWQgdG8gc2V0IFJlYWRPbmx5IGZvciBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVdIGF0dHJpYnV0ZXMuCi0gICAgICAgICAgICAgICAgaWYgKCFjdXN0b21TZXR0ZXIpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBQdXRWYWx1ZUZ1
bmMgY3VzdG9tU2V0dGVyID0gcHJvcGVydHktPmN1c3RvbVNldHRlcjsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoY3VzdG9tU2V0dGVyKTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIG9ubHkgYmUgY2FjaGluZyB0aGVzZSBpZiB3ZSdyZSBub3QgYW4gdW5jYWNoZWFibGUgZGlj
dGlvbmFyeToKICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE1MzQ3CkBAIC04MjYsNiArODUxLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0
SW5saW5lU2xvdyhKU0dsb2JhbE9iagogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBQdXRWYWx1ZUZ1bmMgY3VzdG9tU2V0
dGVyID0gcHJvcGVydHktPmN1c3RvbVNldHRlcjsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
T25jZSBsZWdhY3kgUmVnRXhwIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZCwgdGhlcmUgd291bGQg
YmUgbm8gdXNlIGNhc2UgZm9yIGNhbGxpbmcgQ3VzdG9tVmFsdWUgc2V0dGVyIGlmIHJlY2VpdmVy
IGlzIGFsdGVyZWQuCiAgICAgICAgICAgICAgICAgaWYgKGN1c3RvbVNldHRlciAmJiAhKGlzVGhp
c1ZhbHVlQWx0ZXJlZChzbG90LCBvYmopICYmIHNsb3QuY29udGV4dCgpID09IFB1dFByb3BlcnR5
U2xvdDo6UmVmbGVjdFNldCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVuY2FjaGVhYmxlIGRp
Y3Rpb25hcnk6CkBAIC0yNjI3LDEyICsyNjUzLDE2IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5QWxs
U3RhdGljUHJvcGVydGllcygKICAgICBpZiAoIXN0cnVjdHVyZSh2bSktPmlzRGljdGlvbmFyeSgp
KQogICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6dG9DYWNoZWFibGVEaWN0aW9u
YXJ5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSkpOwogCisgICAgSlNHbG9iYWxPYmplY3Qq
IHRoaXNHbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3Qodm0pOworCiAgICAgZm9yIChj
b25zdCBDbGFzc0luZm8qIGluZm8gPSBjbGFzc0luZm8odm0pOyBpbmZvOyBpbmZvID0gaW5mby0+
cGFyZW50Q2xhc3MpIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBoYXNoVGFibGUgPSBpbmZv
LT5zdGF0aWNQcm9wSGFzaFRhYmxlOwogICAgICAgICBpZiAoIWhhc2hUYWJsZSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiAqaGFzaFRhYmxlKSB7
CisgICAgICAgICAgICBpZiAoKHZhbHVlLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRl
OjpQcm9wZXJ0eUNhbGxiYWNrKSAmJiAhdmFsdWUuaXNMYXp5UHJvcGVydHlFbmFibGVkKHRoaXNH
bG9iYWxPYmplY3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKICAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgdmFsdWUubV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gZ2V0RGlyZWN0T2Zmc2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyNzk1MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzEsNiArMTcxLDcgQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBib29sIGdldE93
blByb3BlcnR5U2xvdElubGluZShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CisgICAgYm9vbCBmaWxsU3RydWN0dXJlUHJvcGVydHlTbG90KFZNJiwgU3RydWN0
dXJlKiwgUHJvcGVydHlPZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5U2xvdCYp
OwogCiAgICAgLy8gVGhlIGtleSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgZ2V0T3duUHJv
cGVydHlTbG90IGlzIHRoYXQgZ2V0T3duUHJvcGVydHlTbG90CiAgICAgLy8gY3VycmVudGx5IHJl
dHVybnMgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIHRoZSBET00gd2luZG93ICh3aXRoIG5vbi1vd24g
cHJvcGVydGllcykKQEAgLTY0OCw3ICs2NDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwdXREaXJl
Y3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIGJvb2wgcHV0RGlyZWN0KFZNJiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICB2b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7
Ci0gICAgYm9vbCBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKFZNJiwgUHJvcGVydHlOYW1lLCBH
ZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0mLCBQcm9wZXJ0eU5hbWUsIEdldHRl
clNldHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0Tm9uSW5k
ZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBHZXR0ZXJTZXR0
ZXIqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBib29sIHB1dERpcmVjdEFjY2Vzc29yKEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBHZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdEN1c3RvbUFjY2Vz
c29yKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKQEAg
LTEzOTEsNiArMTM5MiwxMiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93bk5v
bkluCiAgICAgLy8gZ2V0UHJvcGVydHlTbG90IHJlbGllcyBvbiB0aGlzIG1ldGhvZCBuZXZlciBy
ZXR1cm5pbmcgaW5kZXggcHJvcGVydGllcyEKICAgICBBU1NFUlQoIXBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSk7CiAKKyAgICBmaWxsU3RydWN0dXJlUHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUs
IG9mZnNldCwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0FMV0FZ
U19JTkxJTkUgYm9vbCBKU09iamVjdDo6ZmlsbFN0cnVjdHVyZVByb3BlcnR5U2xvdChWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0
RGlyZWN0KG9mZnNldCk7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIEFTU0VS
VCh2YWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4Miw2ICs2ODIs
OCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmdldE5vblJlaWZpCiAgICAgaWYgKHN0
YXRpY1Byb3BlcnRpZXNSZWlmaWVkKHZtKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCh2bSk7CisKICAgICAv
LyBBZGQgcHJvcGVydGllcyBmcm9tIHRoZSBzdGF0aWMgaGFzaHRhYmxlcyBvZiBwcm9wZXJ0aWVz
CiAgICAgZm9yIChjb25zdCBDbGFzc0luZm8qIGluZm8gPSBjbGFzc0luZm8odm0pOyBpbmZvOyBp
bmZvID0gaW5mby0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiB0YWJs
ZSA9IGluZm8tPnN0YXRpY1Byb3BIYXNoVGFibGU7CkBAIC02ODksOCArNjkxLDExIEBAIEFMV0FZ
U19JTkxJTkUgdm9pZCBKU09iamVjdDo6Z2V0Tm9uUmVpZmkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFi
bGUtPmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJv
cGVydGllc01vZGU6OkluY2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGl0ZXIua2V5KCkpKTsKKyAgICAgICAgICAgIGlmICht
b2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUgJiYgKGl0ZXItPmF0dHJpYnV0
ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBpZiAoKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0
cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrKSAmJiAhaXRlci0+aXNMYXp5UHJvcGVydHlFbmFibGVk
KGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7
CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Mb29rdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0xvb2t1cC5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDM0ICs0MywyMSBAQCB2b2lk
IHJlaWZ5U3RhdGljQWNjZXNzb3IoVk0mIHZtLCBjb25zdCBICiAgICAgdGhpc09iamVjdC5wdXRE
aXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1
dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOwogfQogCi1ib29sIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0
IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3ZvaWQgc2V0VXBTdGF0aWNQcm9w
ZXJ0eVNsb3QoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRh
YmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIEFTU0VSVChlbnRyeS0+YXR0cmli
dXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9y
TGF6eVByb3BlcnR5T3JDb25zdGFudCk7CiAgICAgQVNTRVJUKHRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCh2bSkpOwotICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRy
aWJ1dGU6OkJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5KTsKLSAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIGJvb2wgaXNBY2Nlc3NvciA9IGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3I7Ci0gICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMpOwotCi0gICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAg
Ly8gSWYgYSBwcm9wZXJ0eSBpcyBldmVyIGRlbGV0ZWQgZnJvbSBhbiBvYmplY3Qgd2l0aCBhIHN0
YXRpYyB0YWJsZSwgdGhlbiB3ZSByZWlmeQotICAgICAgICAvLyBhbGwgc3RhdGljIGZ1bmN0aW9u
cyBhdCB0aGF0IHRpbWUgLSBhZnRlciB0aGlzIHdlIHNob3VsZG4ndCBiZSByZS1hZGRpbmcgYW55
dGhpbmcuCi0gICAgICAgIGlmICh0aGlzT2JqZWN0LT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCh2
bSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5z
dGF0aWNQcm9wZXJ0aWVzUmVpZmllZCh2bSkpOworICAgIEFTU0VSVCghdGhpc09iamVjdC0+Z2V0
RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUpKTsKIAotICAgICAgICByZWlmeVN0YXRpY1Byb3BlcnR5
KHZtLCBjbGFzc0luZm8sIHByb3BlcnR5TmFtZSwgKmVudHJ5LCAqdGhpc09iamVjdCk7CisgICAg
cmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUsICplbnRyeSwg
KnRoaXNPYmplY3QpOwogCi0gICAgICAgIG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9m
ZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgaWYgKCFpc1ZhbGlk
T2Zmc2V0KG9mZnNldCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIlN0YXRpYyBoYXNodGFibGUg
aW5pdGlhbGlhdGlvbiBmb3IgIiwgcHJvcGVydHlOYW1lLCAiIGRpZCBub3QgcHJvZHVjZSBhIHBy
b3BlcnR5LlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICB9Ci0gICAgfQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpc09iamVjdC0+
c3RydWN0dXJlKHZtKTsKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNWYWxpZE9mZnNldChvZmZzZXQpLCAiU3RhdGlj
IGhhc2h0YWJsZSBpbml0aWFsaWF0aW9uIGZvciAnJXMnIGRpZCBub3QgcHJvZHVjZSBhIHByb3Bl
cnR5LlxuIiwgcHJvcGVydHlOYW1lLnVpZCgpLT5jaGFyYWN0ZXJzOCgpKTsKIAotICAgIGlmIChp
c0FjY2Vzc29yKQotICAgICAgICBzbG90LnNldENhY2hlYWJsZUdldHRlclNsb3QodGhpc09iamVj
dCwgYXR0cmlidXRlcywganNDYXN0PEdldHRlclNldHRlcio+KHRoaXNPYmplY3QtPmdldERpcmVj
dChvZmZzZXQpKSwgb2Zmc2V0KTsKLSAgICBlbHNlCi0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
c09iamVjdCwgYXR0cmlidXRlcywgdGhpc09iamVjdC0+Z2V0RGlyZWN0KG9mZnNldCksIG9mZnNl
dCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgdGhpc09iamVjdC0+ZmlsbFN0cnVjdHVyZVByb3Bl
cnR5U2xvdCh2bSwgc3RydWN0dXJlLCBvZmZzZXQsIGF0dHJpYnV0ZXMsIHNsb3QpOyAgICAKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Mb29rdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJD
dXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJET01KSVRTaWduYXR1cmUuaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNp
bmNsdWRlICJJbnRyaW5zaWMuaCIKQEAgLTM4LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKKy8vIEZJWE1FOiBUZW1wbGF0aXplIEhhc2hUYWJsZSBhbmQgQ29tcGFjdEhhc2hJbmRleCBz
byBpbnQ4X3Qgc2l6ZWQgdmFsdWVzIGNhbiBiZSB1c2VkIGZvciBzbWFsbCB0YWJsZXMgdG8gcmVk
dWNlIGJpbmFyeSBzaXplLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNzIxNgogc3RydWN0IENvbXBhY3RIYXNoSW5kZXggewogICAgIGNvbnN0IGludDE2X3Qg
dmFsdWU7CiAgICAgY29uc3QgaW50MTZfdCBuZXh0OwpAQCAtNDcsNiArNTAsNyBAQCB0eXBlZGVm
IFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1CiB0eXBlZGVmIFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jIFB1dEZ1bmN0aW9uOwogdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUq
ICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIHR5cGVkZWYgSlNWYWx1ZSAoKkxhenlQcm9wZXJ0
eUNhbGxiYWNrKShWTSYsIEpTT2JqZWN0Kik7Cit0eXBlZGVmIGJvb2wgKCpJc0xhenlQcm9wZXJ0
eUVuYWJsZWRDYWxsYmFjaykoSlNHbG9iYWxPYmplY3QqKTsKIAogLy8gSGFzaCB0YWJsZSBnZW5l
cmF0ZWQgYnkgdGhlIGNyZWF0ZV9oYXNoX3RhYmxlIHNjcmlwdC4KIHN0cnVjdCBIYXNoVGFibGVW
YWx1ZSB7CkBAIC05OSw3ICsxMDMsMTQgQEAgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHsKICAgICAK
ICAgICBwdHJkaWZmX3QgbGF6eUNlbGxQcm9wZXJ0eU9mZnNldCgpIGNvbnN0IHsgQVNTRVJUKG1f
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDZWxsUHJvcGVydHkpOyByZXR1cm4gbV92
YWx1ZXMudmFsdWUxOyB9CiAgICAgcHRyZGlmZl90IGxhenlDbGFzc1N0cnVjdHVyZU9mZnNldCgp
IGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDbGFzc1N0
cnVjdHVyZSk7IHJldHVybiBtX3ZhbHVlcy52YWx1ZTE7IH0KKwogICAgIExhenlQcm9wZXJ0eUNh
bGxiYWNrIGxhenlQcm9wZXJ0eUNhbGxiYWNrKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2spOyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4obV92YWx1ZXMudmFsdWUxKTsgfQorICAgIGJv
b2wgaXNMYXp5UHJvcGVydHlFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9hdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OlByb3BlcnR5Q2FsbGJhY2spOworICAgICAgICBhdXRvIGlzRW5hYmxlZENhbGxiYWNrID0g
Yml0d2lzZV9jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihtX3ZhbHVlcy52YWx1
ZTIpOworICAgICAgICByZXR1cm4gIWlzRW5hYmxlZENhbGxiYWNrIHx8IGlzRW5hYmxlZENhbGxi
YWNrKGdsb2JhbE9iamVjdCk7CisgICAgfQogfTsKIAogc3RydWN0IEhhc2hUYWJsZSB7CkBAIC0y
MDEsNyArMjEyLDcgQEAgc3RydWN0IEhhc2hUYWJsZSB7CiAgICAgfQogfTsKIAotSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChWTSYsIGNvbnN0IENsYXNzSW5m
byosIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVwU3RhdGlj
UHJvcGVydHlTbG90KFZNJiwgY29uc3QgQ2xhc3NJbmZvKiwgY29uc3QgSGFzaFRhYmxlVmFsdWUq
LCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYsIGNvbnN0IEhhc2hU
YWJsZVZhbHVlJiwgSlNPYmplY3QmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSk7CiAKIGlubGlu
ZSBCdWlsdGluR2VuZXJhdG9yIEhhc2hUYWJsZVZhbHVlOjpidWlsdGluQWNjZXNzb3JHZXR0ZXJH
ZW5lcmF0b3IoKSBjb25zdApAQCAtMjE4LDYgKzIyOSw3IEBAIGlubGluZSBCdWlsdGluR2VuZXJh
dG9yIEhhc2hUYWJsZVZhbHVlOjoKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCdWlsdGlu
R2VuZXJhdG9yPihtX3ZhbHVlcy52YWx1ZTIpOwogfQogCisvLyBGSVhNRTogSW5saW5lIHRoaXMg
ZnVuY3Rpb24gaW50byBpdHMgY2FsbCBzaXRlIHNvIHN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkg
Y2hlY2sgY2FuIGJlIGhvaXN0ZWQuCiBpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RG
cm9tVGFibGUoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRh
YmxlJiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAodGhpc09iamVjdC0+c3RhdGljUHJv
cGVydGllc1JlaWZpZWQodm0pKQpAQCAtMjI3LDE4ICsyMzksMjAgQEAgaW5saW5lIGJvb2wgZ2V0
U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYgogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1
dGU6OkJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5KQotICAgICAgICBy
ZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qodm0sIGNsYXNzSW5mbywgZW50cnksIHRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgaWYgKChlbnRyeS0+YXR0cmlidXRlcygp
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2spICYmICFlbnRyeS0+aXNMYXp5
UHJvcGVydHlFbmFibGVkKHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSkpKSB7CisgICAgICAg
IHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKKyAgICAgICAgc2xvdC5zZXRJc1RhaW50ZWRCeU9wYXF1
ZU9iamVjdCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyKSB7Ci0g
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShl
bnRyeS0+YXR0cmlidXRlcygpKSwganNOdW1iZXIoZW50cnktPmNvbnN0YW50SW50ZWdlcigpKSk7
CisgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRp
bk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50KSB7CisgICAgICAg
IHNldFVwU3RhdGljUHJvcGVydHlTbG90KHZtLCBjbGFzc0luZm8sIGVudHJ5LCB0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAg
ICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRy
aWJ1dGUpIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShlbnRyeS0+YXR0cmlidXRlcygp
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5LCAiRE9NSklUQXR0cmlidXRlIHN1cHBvcnRz
IHJlYWRvbmx5IGF0dHJpYnV0ZXMgY3VycmVudGx5LiIpOwogICAgICAgICBjb25zdCBET01KSVQ6
OkdldHRlclNldHRlciogZG9tSklUID0gZW50cnktPmRvbUpJVCgpOwotICAgICAgICBzbG90LnNl
dENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGVudHJ5
LT5hdHRyaWJ1dGVzKCkpLCBkb21KSVQtPmdldHRlcigpLCBudWxscHRyLCBET01BdHRyaWJ1dGVB
bm5vdGF0aW9uIHsgY2xhc3NJbmZvLCBkb21KSVQgfSk7CisgICAgICAgIHNsb3Quc2V0Q2FjaGVh
YmxlQ3VzdG9tKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoZW50cnktPmF0dHJp
YnV0ZXMoKSksIGRvbUpJVC0+Z2V0dGVyKCksIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpLCBET01B
dHRyaWJ1dGVBbm5vdGF0aW9uIHsgY2xhc3NJbmZvLCBkb21KSVQgfSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtMzEyLDggKzMyNiwxNSBAQCBpbmxpbmUgdm9pZCByZWlmeVN0
YXRpY1Byb3BlcnR5KFZNJiB2bSwgCiAgICAgfQogICAgIAogICAgIGlmICh2YWx1ZS5hdHRyaWJ1
dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjaykgeworICAgICAgICBB
U1NFUlQodmFsdWUuaXNMYXp5UHJvcGVydHlFbmFibGVkKHRoaXNPYmouZ2xvYmFsT2JqZWN0KHZt
KSkpOworCiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gdmFsdWUubGF6eVByb3BlcnR5Q2FsbGJh
Y2soKSh2bSwgJnRoaXNPYmopOwotICAgICAgICB0aGlzT2JqLnB1dERpcmVjdCh2bSwgcHJvcGVy
dHlOYW1lLCByZXN1bHQsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygp
KSk7CisgICAgICAgIGlmIChyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSkKKyAgICAgICAgICAgIHRo
aXNPYmoucHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgcHJvcGVydHlOYW1lLCBqc0Nhc3Q8
R2V0dGVyU2V0dGVyKj4ocmVzdWx0KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRy
aWJ1dGVzKCkpIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKKyAgICAgICAgZWxzZSBp
ZiAocmVzdWx0LmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCisgICAgICAgICAgICB0aGlzT2JqLnB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBwcm9wZXJ0eU5hbWUsIHJlc3VsdCwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGhpc09iai5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgcmVzdWx0LCBhdHRyaWJ1
dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zMzksMTAgKzM2MCwxMyBAQCBpbmxpbmUgdm9pZCByZWlmeVN0YXRpY1Byb3Bl
cnR5KFZNJiB2bSwgCiB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1iZXJPZlZhbHVlcz4KIGlubGluZSB2
b2lkIHJlaWZ5U3RhdGljUHJvcGVydGllcyhWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvLCBjb25zdCBIYXNoVGFibGVWYWx1ZSAoJnZhbHVlcylbbnVtYmVyT2ZWYWx1ZXNdLCBKU09i
amVjdCYgdGhpc09iaikKIHsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhp
c09iai5nbG9iYWxPYmplY3Qodm0pOwogICAgIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyIHRy
YW5zaXRpb25PcHRpbWl6ZXIodm0sICZ0aGlzT2JqKTsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
dmFsdWVzKSB7CiAgICAgICAgIGlmICghdmFsdWUubV9rZXkpCiAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgaWYgKCh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UHJvcGVydHlDYWxsYmFjaykgJiYgIXZhbHVlLmlzTGF6eVByb3BlcnR5RW5hYmxlZChnbG9iYWxP
YmplY3QpKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVl
Lm1fa2V5KSwgc3RybGVuKHZhbHVlLm1fa2V5KSk7CiAgICAgICAgIHJlaWZ5U3RhdGljUHJvcGVy
dHkodm0sIGNsYXNzSW5mbywga2V5LCB2YWx1ZSwgdGhpc09iaik7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjc5NTAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NjIsNiArODYyLDgwIEBAIHB1YmxpYzoKICAgICB9CiB9OwogCitzdGF0aWMg
aW5saW5lIGJvb2wgZ2V0RGlyZWN0Qm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBBU0NJSUxpdGVyYWwgc3RyaW5nKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTVmFsdWUgaXNF
bmFibGVkID0gZ2xvYmFsT2JqZWN0LT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHN0cmluZykpOworICAgIGlmICghaXNFbmFibGVkIHx8ICFpc0VuYWJsZWQuaXNCb29s
ZWFuKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNFbmFibGVkLmFzQm9v
bGVhbigpOworfQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihsYXp5QWNjZXNz
b3JHZXR0ZXIpOworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGxhenlBY2Nlc3NvckdldHRlciwg
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKSB7IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7IH0KK3N0YXRpYyBKU1ZhbHVlIGNyZWF0
ZUxhenlDYWxsYmFja0FjY2Vzc29yKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpIHsgcmV0
dXJuIEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0p
LCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSksIDAs
IFN0cmluZygpLCBsYXp5QWNjZXNzb3JHZXR0ZXIpLCBudWxscHRyKTsgfQorc3RhdGljIGJvb2wg
aXNFbmFibGVkTGF6eUNhbGxiYWNrQWNjZXNzb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkgeyByZXR1cm4gZ2V0RGlyZWN0Qm9vbGVhbihnbG9iYWxPYmplY3QsICJpc0VuYWJsZWRMYXp5
Q2FsbGJhY2tBY2Nlc3NvciJfcyk7IH0KKworc3RhdGljIEpTVmFsdWUgY3JlYXRlTGF6eUNhbGxi
YWNrQ3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBKU09iamVjdCopIHsgcmV0dXJuIEN1c3RvbUdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCB0ZXN0U3RhdGljQWNjZXNzb3JHZXR0ZXIsIHRlc3RTdGF0aWNB
Y2Nlc3NvclB1dHRlcik7IH0KK3N0YXRpYyBib29sIGlzRW5hYmxlZExhenlDYWxsYmFja0N1c3Rv
bUFjY2Vzc29yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIHsgcmV0dXJuIGdldERpcmVj
dEJvb2xlYW4oZ2xvYmFsT2JqZWN0LCAiaXNFbmFibGVkTGF6eUNhbGxiYWNrQ3VzdG9tQWNjZXNz
b3IiX3MpOyB9CisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUxhenlDYWxsYmFja0NvbnN0YW50SW50
ZWdlcihWTSYsIEpTT2JqZWN0KikgeyByZXR1cm4ganNOdW1iZXIoNDIpOyB9CitzdGF0aWMgYm9v
bCBpc0VuYWJsZWRMYXp5Q2FsbGJhY2tDb25zdGFudEludGVnZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgeyByZXR1cm4gZ2V0RGlyZWN0Qm9vbGVhbihnbG9iYWxPYmplY3QsICJpc0Vu
YWJsZWRMYXp5Q2FsbGJhY2tDb25zdGFudEludGVnZXIiX3MpOyB9CisKK3N0YXRpYyBjb25zdCBz
dHJ1Y3QgSGFzaFRhYmxlVmFsdWUgc3RhdGljTGF6eVByb3BlcnR5VGFibGVWYWx1ZXNbM10gPSB7
CisgICAgeyAidGVzdExhenlDYWxsYmFja0FjY2Vzc29yIiwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlTGF6
eUNhbGxiYWNrQWNjZXNzb3IpLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlF
bmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZExhenlDYWxsYmFja0FjY2Vzc29yKSB9IH0sCisgICAg
eyAidGVzdExhenlDYWxsYmFja0N1c3RvbUFjY2Vzc29yIiwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3Jl
YXRlTGF6eUNhbGxiYWNrQ3VzdG9tQWNjZXNzb3IpLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8SXNM
YXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZExhenlDYWxsYmFja0N1c3RvbUFj
Y2Vzc29yKSB9IH0sCisgICAgeyAidGVzdExhenlDYWxsYmFja0NvbnN0YW50SW50ZWdlciIsIFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlTGF6eUNhbGxi
YWNrQ29uc3RhbnRJbnRlZ2VyKSwgKGludHB0cl90KXN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5
RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRMYXp5Q2FsbGJhY2tDb25zdGFudEludGVnZXIpIH0g
fSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBzdGF0aWNMYXp5
UHJvcGVydHlUYWJsZUluZGV4WzhdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorICAg
IHsgMiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKK307CisKK3N0YXRp
YyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlIHN0YXRpY0xhenlQcm9wZXJ0eVRhYmxlID0KKyAgICB7
IDMsIDcsIHRydWUsIG51bGxwdHIsIHN0YXRpY0xhenlQcm9wZXJ0eVRhYmxlVmFsdWVzLCBzdGF0
aWNMYXp5UHJvcGVydHlUYWJsZUluZGV4IH07CisKK2NsYXNzIFN0YXRpY0xhenlQcm9wZXJ0eSA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9i
amVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworcHVibGljOgorICAg
IFN0YXRpY0xhenlQcm9wZXJ0eShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBDb21wbGV0
ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZt
LmNlbGxTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgU3RhdGljTGF6eVByb3BlcnR5KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7CisgICAgICAgIFN0YXRpY0xhenlQcm9wZXJ0eSogbGF6eVByb3BlcnR5ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8U3RhdGljTGF6eVByb3BlcnR5Pih2bS5oZWFwKSkgU3RhdGljTGF6
eVByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBsYXp5UHJvcGVydHktPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGxhenlQcm9wZXJ0eTsKKyAgICB9Cit9OworCiBj
bGFzcyBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmpl
Y3Q7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzUHV0OwpAQCAtMTcxMiw2ICsxNzg2LDcgQEAgY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcgogCiBjb25zdCBDbGFzc0luZm8g
U3RhdGljQ3VzdG9tQWNjZXNzb3I6OnNfaW5mbyA9IHsgIlN0YXRpY0N1c3RvbUFjY2Vzc29yIiwg
JkJhc2U6OnNfaW5mbywgJnN0YXRpY0N1c3RvbUFjY2Vzc29yVGFibGUsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoU3RhdGljQ3VzdG9tQWNjZXNzb3IpIH07CiBjb25zdCBDbGFzc0luZm8g
U3RhdGljQ3VzdG9tVmFsdWU6OnNfaW5mbyA9IHsgIlN0YXRpY0N1c3RvbVZhbHVlIiwgJkJhc2U6
OnNfaW5mbywgJnN0YXRpY0N1c3RvbVZhbHVlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoU3RhdGljQ3VzdG9tVmFsdWUpIH07Citjb25zdCBDbGFzc0luZm8gU3RhdGljTGF6eVBy
b3BlcnR5OjpzX2luZm8gPSB7ICJTdGF0aWNMYXp5UHJvcGVydHkiLCAmQmFzZTo6c19pbmZvLCAm
c3RhdGljTGF6eVByb3BlcnR5VGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoU3Rh
dGljTGF6eVByb3BlcnR5KSB9OwogY29uc3QgQ2xhc3NJbmZvIE9iamVjdERvaW5nU2lkZUVmZmVj
dFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1czo6c19pbmZvID0geyAiT2JqZWN0RG9pbmdTaWRl
RWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzIiwgJkJhc2U6OnNfaW5mbywgJnN0YXRp
Y0N1c3RvbUFjY2Vzc29yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqZWN0
RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKSB9OwogCiBFbGVtZW50
SGFuZGxlT3duZXIqIEVsZW1lbnQ6OmhhbmRsZU93bmVyKCkKQEAgLTE5NzcsNiArMjA1Miw3IEBA
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW8KICNlbmRpZgogc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DcmVhdGVTdGF0aWNDdXN0b21BY2Nl
c3Nvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkNyZWF0ZVN0
YXRpY0N1c3RvbVZhbHVlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uQ3JlYXRlU3RhdGljTGF6eVByb3BlcnR5KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uQ3JlYXRlT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJl
Y3RTbG90U3RhdHVzKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
Q3JlYXRlRW1wdHlGdW5jdGlvbldpdGhOYW1lKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUpOwpAQCAtMjk3OSw2ICszMDU1
LDE2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkNyZWF0ZVMKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvbkNyZWF0ZVN0YXRpY0xhenlQcm9wZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHZtKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0YXRpY0xhenlQcm9wZXJ0
eTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKKyAgICBhdXRv
KiByZXN1bHQgPSBTdGF0aWNMYXp5UHJvcGVydHk6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvbkNyZWF0ZU9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3Jy
ZWN0U2xvdFN0YXR1cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpAQCAt
Mzc3MSw2ICszODU3LDcgQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiAjZW5kaWYKICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZVN0YXRpY0N1c3RvbUFjY2Vzc29y
IiwgZnVuY3Rpb25DcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3NvciwgMCk7CiAgICAgYWRkRnVuY3Rp
b24odm0sICJjcmVhdGVTdGF0aWNDdXN0b21WYWx1ZSIsIGZ1bmN0aW9uQ3JlYXRlU3RhdGljQ3Vz
dG9tVmFsdWUsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlU3RhdGljTGF6eVByb3Bl
cnR5IiwgZnVuY3Rpb25DcmVhdGVTdGF0aWNMYXp5UHJvcGVydHksIDApOwogICAgIGFkZEZ1bmN0
aW9uKHZtLCAiY3JlYXRlT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90
U3RhdHVzIiwgZnVuY3Rpb25DcmVhdGVPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29y
cmVjdFNsb3RTdGF0dXMsIDApOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlRW1wdHlGdW5j
dGlvbldpdGhOYW1lIiwgZnVuY3Rpb25DcmVhdGVFbXB0eUZ1bmN0aW9uV2l0aE5hbWUsIDEpOwog
ICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0UHJpdmF0ZVByb3BlcnR5IiwgZnVuY3Rpb25HZXRQcml2
YXRlUHJvcGVydHksIDIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5NTAzKQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTcgQEAKKzIw
MjEtMDctMDIgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIFtXZWJJRExdIFJld29yayBydW50aW1lIGVuYWJsZWQgcHJvcGVydGllcyBsZXZlcmFnaW5n
IFByb3BlcnR5Q2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNzI3NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisg
ICAgICAgIFRoaXMgcGVyZm9ybWFuY2UtbmV1dHJhbCBjaGFuZ2UgbWFrZXMgaW1wbGVtZW50YXRp
b24gb2YgcnVudGltZSBlbmFibGVkIHByb3BlcnRpZXMgaW5kZXBlbmRlbnQKKyAgICAgICAgb2Yg
ZWFnZXIgcHJvcGVydHkgcmVpZmljYXRpb24sIHNsaWdodGx5IG9wdGltaXppbmcgRE9NIGdsb2Jh
bCBvYmplY3RzIGluaXRpYWxpemF0aW9uLgorICAgICAgICBBIGZvbGxvdy11cCBwYXRjaCAod2Vi
a2l0Lm9yZy9iLzE1ODU1Nykgd2lsbCByZW1vdmUgZWFnZXIgcHJvcGVydHkgcmVpZmljYXRpb24g
b2YgV2ViSURMCisgICAgICAgIGNvbnN0cnVjdG9ycyAvIHByb3RvdHlwZXMsIGZ1cnRoZXIgcmVk
dWNpbmcgQ1BVIHVzYWdlIGFuZCBtZW1vcnkgY29zdCBvbiBwYWdlIGxvYWQuCisKKyAgICAgICAg
UHJvdmlkZWQgd2UgcmVpZnkgcHJvcGVydGllcyB3aXRob3V0IGNyZWF0aW5nIHRyYW5zaXRpb25z
IGFuZCBhdm9pZCBjb252ZXJzaW9uIHRvIGEgY2FjaGVhYmxlCisgICAgICAgIGRpY3Rpb25hcnks
IHRoYXQgc2hvdWxkIG5vdCByZWdyZXNzIHBlcmZvcm1hbmNlICYgbWVtb3J5IHVzYWdlIGFzIHdl
bGwuIE5vbi1yZWlmaWVkIGN1c3RvbQorICAgICAgICBhY2Nlc3NvcnMgLyB2YWx1ZXMgYXJlIGlu
bGluZS1jYWNoZWQsIGV2ZW4gdGhyb3VnaCBKU1Byb3h5LiBET00gbWV0aG9kcyBhcmUgcmVpZmll
ZCBvbiBmaXJzdAorICAgICAgICBsb29rdXA7IHRoZSBzYW1lIGFwcHJvYWNoIGlzIHVzZWQgZm9y
IG11bHRpcGxlIGhvdCBKU0MgYnVpbHQtaW5zIChlLmcuIFN0cmluZ1Byb3RvdHlwZSkuCisKKyAg
ICAgICAgQSBodWdlIHJlZmFjdG9yaW5nIHdhcyByZXF1aXJlZCB0byBrZWVwIGdlbmVyYXRpb24g
b2YgbGF6eSBwcm9wZXJ0eSBjYWxsYmFja3Mgd2l0aGluIGEgc2luZ2xlCisgICAgICAgIGZ1bmN0
aW9uLiBIYW5kbGluZyBvZiBwcml2YXRlIGlkZW50aWZpZXJzIHdhcyBkZWNvdXBsZWQgZnJvbSBw
dWJsaWMgb25lcywgd2hpbGUgaGFzaCB0YWJsZQorICAgICAgICBnZW5lcmF0aW9uIGZvciBjb25z
dHJ1Y3RvcnMgLyBwcm90b3R5cGVzIC8gaW5zdGFuY2VzIHdhcyBtZXJnZWQgaW50byBHZW5lcmF0
ZUhhc2hUYWJsZS4KKworICAgICAgICBUaGlzIGFwcHJvYWNoIHByZXNlcnZlcyBIYXNoVGFibGUn
cyBpbW11dGFiaWxpdHkgd2hpbGUgYXZvaWRpbmcgYWRkaXRpb24gb2YgZXh0cmEgY2hlY2tzIHRv
CisgICAgICAgIGVudHJ5IGxvb2t1cCBhbmQgbWVtb3J5IHVzYWdlIGluY3JlYXNlLiBBbm90aGVy
IGltcG9ydGFudCBhZHZhbnRhZ2U6IGEgZmVhdHVyZSB0aGF0IHdhcworICAgICAgICBlbmFibGVk
IGFmdGVyIGl0cyBpbnRlcmZhY2Ugd2FzIGNyZWF0ZWQsIGltbWVkaWF0ZWx5IGJlY29tZXMgdXNh
YmxlIChubyBwYWdlIHJlbG9hZCBuZWVkZWQpLgorCisgICAgICAgIEFsc28sIHRoaXMgY2hhbmdl
IHJlbW92ZXMgYWxsIHVzYWdlcyBvZiBEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBmcm9tIFdlYkNv
cmUsIHdoaWNoIHdhcyB1c2VkCisgICAgICAgIHRvIGRpc2FibGUgbm9uLWNvbmZpZ3VyYWJsZSBj
b25zdGFudHMgYXQgcnVudGltZSwgYWxsb3dpbmcgaXRzIGNvbXBsZXRlIHJlbW92YWwgaW4gdGhl
IGZ1dHVyZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIEV4dHJhY3QgSURMSW50ZXJmYWNlOjpj
bGFzc05hbWUoKSB0byBhdm9pZCBwYXNzaW5nICRjbGFzc05hbWUgYXMgYW4gYXJndW1lbnQuCisK
KyAgICAgICAgKEluc3RhbmNlT3BlcmF0aW9uQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoUHJv
dG90eXBlT3BlcmF0aW9uQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zdGFuY2VQcm9wZXJ0
eUNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFByb3RvdHlwZVByb3BlcnR5Q291bnQpOiBEZWxl
dGVkLgorICAgICAgICAoUHJvdG90eXBlSGFzU3RhdGljUHJvcGVydHlUYWJsZSk6IERlbGV0ZWQu
CisgICAgICAgIChDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMpOgorICAgICAgICAoUHJvdG90eXBl
SGFzUHJvcGVydGllcyk6CisgICAgICAgIChJbnN0YW5jZUhhc1Byb3BlcnRpZXMpOgorICAgICAg
ICBSZW1vdmUgKkNvdW50IGhlbHBlcnMgYmVjYXVzZSB0aGV5IHdlcmUgaW5jb3JyZWN0IHdpdGgg
Y29uc3RhbnRzLCBvdmVybG9hZHMsIHByaXZhdGUgaWRlbnRpZmllcnMsCisgICAgICAgIGFuZCBT
eW1ib2wuaXRlcmF0b3IuIEluc3RlYWQsIGRvIHRoZSBjb3VudCBpbiBHZW5lcmF0ZVByb3BlcnRp
ZXNIYXNoVGFibGUgdG8gYXZvaWQgZHVwbGljYXRlIGNoZWNrcy4KKworICAgICAgICAoR2VuZXJh
dGVQcm9wZXJ0aWVzSGFzaFRhYmxlKToKKyAgICAgICAgKEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVB
cnJheSk6CisgICAgICAgIC0gQ29tcHV0ZSAkaGFzU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXMg
ZWFybHkgYmVjYXVzZSBpdCdzIGltcG9zc2libGUgdG8gZGV0ZWN0IHJ1bnRpbWUgZW5hYmxlZCBh
Y2Nlc3NvcnMsCisgICAgICAgICAgd2hpY2ggYXJlIGNvbmNlYWxlZCBiZWhpbmQgUHJvcGVydHlB
dHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIGluIEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJh
eS4KKyAgICAgICAgLSBTZXQgSGFzaFRhYmxlLmhhc1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVz
IHRvIGB0cnVlYCBpZiBhIHJlYWQtb25seSB2YWx1ZSAoY29uc3RhbnQpIHdhcyBzZWVuLgorCisg
ICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyk6CisgICAgICAg
IEFsd2F5cyB1c2UgcHJvdmlkZWQgJGdsb2JhbE9iamVjdFB0ciBwYXJhbWV0ZXIuCisKKyAgICAg
ICAgKEdlbmVyYXRlSGFzaFRhYmxlKToKKyAgICAgICAgLSBTaW1wbGlmeSBuYW1lIGluZmVyZW5j
ZSBmb3IgSGFzaFRhYmxlJ3MgdmFsdWVzIC8gaW5kaWNlcyBzaW5jZSBoYXNoIHRhYmxlIG5hbWVz
IG5ldmVyIGluY2x1ZGUgIjoiLgorICAgICAgICAtIE5pY2VseSBzaW1wbGlmeSBnZW5lcmF0aW9u
IG9mIGhhc2ggdGFibGUga2luZCBjb21tZW50LgorICAgICAgICAtIFNldCBIYXNoVGFibGUuY2xh
c3NGb3JUaGlzIHRvIGBudWxscHRyYCBmb3IgY29uc3RydWN0b3JzIGJlY2F1c2UgdGhleSBjYW4n
dCBoYXZlIERPTUF0dHJpYnV0ZSBwcm9wZXJ0aWVzLgorCisgICAgICAgIChHZW5lcmF0ZUltcGxl
bWVudGF0aW9uKToKKyAgICAgICAgLSBTZXQgUmVhZE9ubHkgYXR0cmlidXRlIGZvciBydW50aW1l
IHJlYWQtb25seSBhY2Nlc3NvcnMgdGhhdCBzaGFkb3cgc2V0dGVyIGZyb20gc3RhdGljIGhhc2gg
dGFibGUuCisgICAgICAgIC0gUmVpZnkgImVudHJpZXMiIHByb3BlcnR5IG9mIGFuIGl0ZXJhYmxl
IGludGVyZmFjZSB0byBlbnN1cmUgaXRzIGlkZW50aXR5IHdpdGggU3ltYm9sLml0ZXJhdG9yIG1l
dGhvZC4KKworICAgICAgICAoR2VuZXJhdGVQcml2YXRlSWRlbnRpZmllcnMpOgorICAgICAgICAt
IEFkZCBzdXBwb3J0IGZvciBhY2NlbGVyYXRlZCBET00gYXR0cmlidXRlcywgd2hpY2ggYXJlIHJh
dGhlciBjb21tb24uCisgICAgICAgIC0gQWRkIHN1cHBvcnQgZm9yIHN0YXRpYyBvcGVyYXRpb25z
LCB3aGljaCB3ZSBoYXZlIGEgdXNlIGNhc2UgZm9yIChzZWUgQHdoZW5TaWduYWxBYm9ydGVkKS4K
KworICAgICAgICAoR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbik6CisgICAgICAgIFNldCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHN0cnVjdHVyZSBmbGFnIGZvciBnbG9iYWwgaW50ZXJmYWNl
cyBhcyB3ZWxsLCBwcm9ncmVzc2luZyBpZGxoYXJuZXNzLmpzIHRlc3QuCisKKyAgICAgICAgKEdl
bmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgRW5zdXJlIHRoYXQgSGFz
U3RhdGljUHJvcGVydHlUYWJsZSBzdHJ1Y3R1cmUgZmxhZyBpcyBzZXQgZm9yIGNvbnN0cnVjdG9y
cyBhcyB3ZWxsLgorCisgICAgICAgIChTdHJpbmdpZnlKU0NBdHRyaWJ1dGVzKToKKyAgICAgICAg
KEdldEpTQ0F0dHJpYnV0ZXNGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoU2hvdWxkQmVPbkluc3Rh
bmNlKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdldEF0dHJpYnV0ZUdl
dHRlcik6CisgICAgICAgIChHZXRBdHRyaWJ1dGVTZXR0ZXIpOgorICAgICAgICAoR2V0QXR0cmli
dXRlSlNWYWx1ZSk6CisgICAgICAgIChHZXRPcGVyYXRpb25KU1ZhbHVlKToKKyAgICAgICAgKEdl
bmVyYXRlTGF6eVByb3BlcnR5Q2FsbGJhY2tzKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJ
bXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAoR2V0UnVudGltZUVuYWJsZWRTdGF0aWNQ
cm9wZXJ0aWVzKTogRGVsZXRlZC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy8qOiBVcGRhdGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dD
b25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RW5h
YmxlZEJ5U2V0dGluZy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsOgorICAgICAgICBDb3ZlciBbUHJpdmF0ZUlkZW50aWZpZXJzXSB3aXRoIGFjY2VsZXJh
dGVkIERPTSBhdHRyaWJ1dGVzLCBzdGF0aWMgb3BlcmF0aW9ucywgYW5kIGNvbnN0cnVjdG9ycy4K
KwogMjAyMS0wNy0wMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzk0ODcuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQnVpbHRp
bkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNET01CdWlsdGlu
Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlIHsK
IHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHN0YXRpYyBK
U0RPTUJ1aWx0aW5Db25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBjbGFzcyBKU0RPTUNv
bnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEpTRE9NQ29uc3RydWN0b3JCYXNlIHsKIHB1YmxpYzoK
ICAgICB1c2luZyBCYXNlID0gSlNET01Db25zdHJ1Y3RvckJhc2U7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzOwogCiAgICAgc3RhdGljIEpTRE9NQ29uc3RydWN0b3Iq
IGNyZWF0ZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90Q2Fs
bGFibGUuaAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMz
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xh
c3MgSlNET01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlIDogcHVibGljIEpTRE9NT2JqZWN0IHsKIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNET01PYmplY3Q7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiAgICAgc3RhdGljIEpTRE9NQ29uc3Ry
dWN0b3JOb3RDYWxsYWJsZSogY3JlYXRlKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaAkocmV2aXNpb24gMjc5NTAzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBjbGFzcyBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0RPTUNvbnN0cnVjdG9yQmFzZSB7CiBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTRE9NQ29uc3RydWN0b3JCYXNlOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHN0YXRpYyBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZSogY3JlYXRlKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIs
NyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgR29vZ2xlIEluYy4K
ICMgQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAyMSBBbGV4ZXkgU2h2YXlrYSA8c2h2YWlrYWxl
c2hAZ21haWwuY29tPgogIwogIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNyw2ICszOCwxMiBAQCB1c2UgQ2Fy
cCBxdzxsb25nbWVzcz47CiB1c2UgRGF0YTo6RHVtcGVyOwogdXNlIEhhc2hlcjsKIAordXNlIGNv
bnN0YW50IHsKKyAgICBDT05URVhUX05BTUVfQ09OU1RSVUNUT1IgPT4gIkNvbnN0cnVjdG9yIiwK
KyAgICBDT05URVhUX05BTUVfUFJPVE9UWVBFID0+ICJQcm90b3R5cGUiLAorICAgIENPTlRFWFRf
TkFNRV9JTlNUQU5DRSA9PiAiSW5zdGFuY2UiLAorfTsKKwogbXkgJGNvZGVHZW5lcmF0b3I7CiBt
eSAkd3JpdGVEZXBlbmRlbmNpZXM7CiAKQEAgLTEwOCw2ICsxMTUsMTIgQEAgbXkgJGhlYWRlclRl
bXBsYXRlID0gPDwgIkVPRiI7CiAqLwogRU9GCiAKK3N1YiBJRExJbnRlcmZhY2U6OmNsYXNzTmFt
ZQoreworICAgIG15ICRzZWxmID0gc2hpZnQ7CisgICAgcmV0dXJuICJKUyIgLiAkc2VsZi0+dHlw
ZS0+bmFtZTsKK30KKwogc3ViIGFzc2VydAogewogICAgIG15ICRtZXNzYWdlID0gc2hpZnQ7CkBA
IC0yMDQyLDYgKzIwNTUsMTYgQEAgc3ViIElzQWNjZWxlcmF0ZWRET01BdHRyaWJ1dGUKICAgICBy
ZXR1cm4gMTsKIH0KIAorc3ViIFN0cmluZ2lmeUpTQ0F0dHJpYnV0ZXMKK3sKKyAgICBteSAkc3Bl
Y2lhbHMgPSBzaGlmdDsKKyAgICBteSAkbGVuZ3RoID0gc2NhbGFyKEAkc3BlY2lhbHMpOworCisg
ICAgcmV0dXJuICIwIiBpZiAkbGVuZ3RoID09IDA7CisgICAgcmV0dXJuICJzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oQCR7c3BlY2lhbHN9KSIgaWYgJGxlbmd0aCA9PSAxOworICAgIHJldHVybiBqb2lu
KCIgfCAiLCBAJHNwZWNpYWxzKTsKK30KKwogc3ViIEdldEpTQ0F0dHJpYnV0ZXNGb3JBdHRyaWJ1
dGUKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CkBAIC0yMDU1LDEwICsyMDc4LDE2IEBA
IHN1YiBHZXRKU0NBdHRyaWJ1dGVzRm9yQXR0cmlidXRlCiAgICAgcHVzaChAc3BlY2lhbHMsICJK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSIpIGlmICgkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntOb3RFbnVtZXJhYmxlfSB8fCAkaXNHbG9iYWxDb25zdHJ1Y3Rvcik7CiAg
ICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSIpIGlm
IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSk7CiAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciIpIHVubGVzcyAkaXNHbG9iYWxDb25zdHJ1Y3Rv
ciBvciBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKworICAgIGlmIChOZWVk
c1J1bnRpbWVDaGVjaygkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgeworICAgICAgICBwdXNoKEBz
cGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2siKTsKKyAg
ICAgICAgcmV0dXJuIFxAc3BlY2lhbHM7CisgICAgfQorCiAgICAgcHVzaChAc3BlY2lhbHMsICJK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUiKSBpZiBJc0FjY2VsZXJhdGVkRE9N
QXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIHB1c2goQHNwZWNpYWxzLCAi
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlIikgaWYgJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfTsKICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVp
bHRpbiIpIGlmICBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICByZXR1
cm4gInN0YXRpY19jYXN0PHVuc2lnbmVkPigiIC4gKChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8
ICIsIEBzcGVjaWFscykgOiAiMCIpIC4gIikiOworICAgIHJldHVybiBcQHNwZWNpYWxzOwogfQog
CiBzdWIgR2V0SW5kZXhlZEdldHRlck9wZXJhdGlvbgpAQCAtMjA5MSw1MyArMjEyMCw2IEBAIHN1
YiBHZXROYW1lZERlbGV0ZXJPcGVyYXRpb24KICAgICByZXR1cm4gR2V0U3BlY2lhbEFjY2Vzc29y
T3BlcmF0aW9uRm9yVHlwZSgkaW50ZXJmYWNlLCAiZGVsZXRlciIsICJET01TdHJpbmciLCAxKTsK
IH0KIAotc3ViIEluc3RhbmNlT3BlcmF0aW9uQ291bnQKLXsKLSAgICBteSAkaW50ZXJmYWNlID0g
c2hpZnQ7Ci0gICAgbXkgJGNvdW50ID0gMDsKLQotICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAo
QHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewotICAgICAgICAkY291bnQrKyBpZiBPcGVyYXRp
b25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7Ci0gICAgfQotCi0g
ICAgcmV0dXJuICRjb3VudDsKLX0KLQotc3ViIFByb3RvdHlwZU9wZXJhdGlvbkNvdW50Ci17Ci0g
ICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRjb3VudCA9IDA7Ci0KLSAgICBmb3Jl
YWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAg
JGNvdW50KysgaWYgISRvcGVyYXRpb24tPmlzU3RhdGljICYmICFPcGVyYXRpb25TaG91bGRCZU9u
SW5zdGFuY2UoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7Ci0gICAgfQotCi0gICAgcmV0dXJuICRj
b3VudDsKLX0KLQotc3ViIEluc3RhbmNlUHJvcGVydHlDb3VudAotewotICAgIG15ICRpbnRlcmZh
Y2UgPSBzaGlmdDsKLSAgICBteSAkY291bnQgPSAwOwotICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0
ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAkY291bnQrKyBpZiBBdHRy
aWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0gICAgfQot
ICAgICRjb3VudCArPSBJbnN0YW5jZU9wZXJhdGlvbkNvdW50KCRpbnRlcmZhY2UpOwotICAgIHJl
dHVybiAkY291bnQ7Ci19Ci0KLXN1YiBQcm90b3R5cGVQcm9wZXJ0eUNvdW50Ci17Ci0gICAgbXkg
JGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRjb3VudCA9IDA7Ci0gICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICRjb3VudCsr
IGlmICFBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7
Ci0gICAgfQotICAgICRjb3VudCArPSBQcm90b3R5cGVPcGVyYXRpb25Db3VudCgkaW50ZXJmYWNl
KTsKLSAgICAkY291bnQrKyBpZiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkoJGludGVyZmFjZSk7
Ci0gICAgcmV0dXJuICRjb3VudDsKLX0KLQogc3ViIEluc3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwpAQCAtMjE3OSwxMyArMjE2
MSw2IEBAIHN1YiBJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5CiAgICAgICAgIHx8IEdl
dE5hbWVkRGVsZXRlck9wZXJhdGlvbigkaW50ZXJmYWNlKTsKIH0KIAotc3ViIFByb3RvdHlwZUhh
c1N0YXRpY1Byb3BlcnR5VGFibGUKLXsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAg
bXkgJG51bUNvbnN0YW50cyA9IEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfTsKLSAgICByZXR1cm4g
JG51bUNvbnN0YW50cyA+IDAgfHwgUHJvdG90eXBlUHJvcGVydHlDb3VudCgkaW50ZXJmYWNlKSA+
IDA7Ci19Ci0KIHN1YiBJbnN0YW5jZU5lZWRzVmlzaXRDaGlsZHJlbgogewogICAgIG15ICRpbnRl
cmZhY2UgPSBzaGlmdDsKQEAgLTI5MTAsNyArMjg4NSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAgICAgfQogCi0gICAg
JHN0cnVjdHVyZUZsYWdzeyJKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGUifSA9IDEgaWYgSW5z
dGFuY2VQcm9wZXJ0eUNvdW50KCRpbnRlcmZhY2UpID4gMDsKKyAgICAkc3RydWN0dXJlRmxhZ3N7
IkpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSJ9ID0gMSBpZiBJbnN0YW5jZUhhc1Byb3BlcnRp
ZXMoJGludGVyZmFjZSk7CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok5ld0ltcHVyZVByb3Bl
cnR5RmlyZXNXYXRjaHBvaW50cyJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHN9OwogICAgICRzdHJ1Y3R1cmVG
bGFnc3siSlNDOjpJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCJ9ID0gMSBpZiAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09i
amVjdH07CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok1hc3F1ZXJhZGVzQXNVbmRlZmluZWQi
fSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZH07CkBAIC0zMzExLDExNSArMzI4NiwyMjkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgfQogfQogCitzdWIgU2hvdWxkQmVPbkluc3RhbmNlCit7CisgICAgbXkgKCRpbnRlcmZhY2Us
ICRjb250ZXh0KSA9IEBfOworCisgICAgcmV0dXJuIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5j
ZSgkaW50ZXJmYWNlLCAkY29udGV4dCkgaWYgcmVmKCRjb250ZXh0KSBlcSAiSURMT3BlcmF0aW9u
IjsKKyAgICByZXR1cm4gQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRj
b250ZXh0KSBpZiByZWYoJGNvbnRleHQpIGVxICJJRExBdHRyaWJ1dGUiOworCisgICAgYXNzZXJ0
KCJVbnN1cHBvcnRlZCBhcmd1bWVudDogIiAuIHJlZigkY29udGV4dCkpOworfQorCitzdWIgQ29u
c3RydWN0b3JIYXNQcm9wZXJ0aWVzCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworICAg
IHJldHVybiAxIGlmIEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfTsKKyAgICBmb3JlYWNoIG15ICRv
cGVyYXRpb25PckF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSwgQHskaW50ZXJm
YWNlLT5hdHRyaWJ1dGVzfSkgeworICAgICAgICByZXR1cm4gMSBpZiAkb3BlcmF0aW9uT3JBdHRy
aWJ1dGUtPmlzU3RhdGljOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3ViIFByb3RvdHlw
ZUhhc1Byb3BlcnRpZXMKK3sKKyAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisgICAgcmV0dXJu
IDEgaWYgQHskaW50ZXJmYWNlLT5jb25zdGFudHN9OworICAgIHJldHVybiAxIGlmIE5lZWRzQ29u
c3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKTsKKyAgICBmb3JlYWNoIG15ICRvcGVyYXRpb25P
ckF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSwgQHskaW50ZXJmYWNlLT5hdHRy
aWJ1dGVzfSkgeworICAgICAgICByZXR1cm4gMSB1bmxlc3MgU2hvdWxkQmVPbkluc3RhbmNlKCRp
bnRlcmZhY2UsICRvcGVyYXRpb25PckF0dHJpYnV0ZSk7CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCitzdWIgSW5zdGFuY2VIYXNQcm9wZXJ0aWVzCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNo
aWZ0OworICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbk9yQXR0cmlidXRlIChAeyRpbnRlcmZhY2Ut
Pm9wZXJhdGlvbnN9LCBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgIHJldHVy
biAxIGlmIFNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uT3JBdHRyaWJ1
dGUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3ViIEdldEF0dHJpYnV0ZUdldHRlcgor
eworICAgIG15ICgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOworICAgIHJldHVybiAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9CisgICAgICAgID8gIiZET01KSVRB
dHRyaWJ1dGVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUpCisgICAgICAgIDogR2V0QXR0cmlidXRlR2V0dGVy
TmFtZSgkaW50ZXJmYWNlLCAkaW50ZXJmYWNlLT5jbGFzc05hbWUsICRhdHRyaWJ1dGUpOworfQor
CitzdWIgR2V0QXR0cmlidXRlU2V0dGVyCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpID0gQF87CisgICAgIyBGSVhNRTogUmVtb3ZlIElzQ29uc3RydWN0b3JUeXBlIGNoZWNrIGJ5
IHV0aWxpemluZyBMYXp5UHJvcGVydHkgZm9yIHdpbmRvdy4lSW50ZXJmYWNlJSBjb25zdHJ1Y3Rv
cnMuCisgICAgcmV0dXJuIElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgfHwgJGNvZGVHZW5lcmF0b3It
PklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpID8gIm51bGxwdHIiIDogR2V0QXR0
cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkaW50ZXJmYWNlLT5jbGFzc05hbWUsICRhdHRy
aWJ1dGUpOworfQorCitzdWIgR2V0QXR0cmlidXRlSlNWYWx1ZQoreworICAgIG15ICgkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKSA9IEBfOworICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0
ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0
ZVNldHRlcigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICByZXR1cm4gSXNBY2NlbGVyYXRl
ZERPTUF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKQorICAgICAgICA/ICJET01BdHRy
aWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJHtnZXR0ZXJ9LCAke3NldHRlcn0sIERPTUF0
dHJpYnV0ZUFubm90YXRpb24geyAiIC4gJGludGVyZmFjZS0+Y2xhc3NOYW1lIC4gIjo6aW5mbygp
LCBudWxscHRyIH0pIgorICAgICAgICA6ICJDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwg
JHtnZXR0ZXJ9LCAke3NldHRlcn0pIjsKK30KKworc3ViIEdldE9wZXJhdGlvbkpTVmFsdWUKK3sK
KyAgICBteSAoJGludGVyZmFjZSwgJG9wZXJhdGlvbiwgJGdsb2JhbE9iamVjdFB0cikgPSBAXzsK
KyAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRpbnRl
cmZhY2UtPmNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CisgICAgcmV0dXJuIElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRvcGVyYXRpb24pCisgICAgICAgID8gIkpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
JHtmdW5jdGlvbk5hbWV9KHZtKSwgJHtnbG9iYWxPYmplY3RQdHJ9KSIKKyAgICAgICAgOiAiSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCAke2dsb2JhbE9iamVjdFB0cn0sICIgLiBHZXRGdW5jdGlvbkxl
bmd0aCgkb3BlcmF0aW9uKSAuICIsIFwiIiAuICRvcGVyYXRpb24tPm5hbWUgLiAiXCJfcywgJHtm
dW5jdGlvbk5hbWV9KSI7Cit9CisKK3N1YiBHZW5lcmF0ZUxhenlQcm9wZXJ0eUNhbGxiYWNrcwor
eworICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJGpzVmFsdWUsICRjb250ZXh0TmFtZVBy
ZWZpeCwgJGNvbmRpdGlvbmFsKSA9IEBfOworCisgICAgaWYgKCRjb25kaXRpb25hbCkgeworICAg
ICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkY29uZGl0aW9uYWwpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7CisgICAgfQor
CisgICAgbXkgJGNvbnRleHROYW1lID0gJGNvbnRleHQtPm5hbWU7CisgICAgJGNvbnRleHROYW1l
ID1+IHMvLS9fL2c7ICMgRm9yIENTUyBwcm9wZXJ0eSBuYW1lcworICAgIG15ICRuYW1lU3VmZml4
ID0gJGludGVyZmFjZS0+Y2xhc3NOYW1lIC4gIiR7Y29udGV4dE5hbWVQcmVmaXh9XyR7Y29udGV4
dE5hbWV9IjsKKworICAgIG15ICR2YWx1ZUNhbGxiYWNrTmFtZSA9ICJjcmVhdGUke25hbWVTdWZm
aXh9IjsKKyAgICBteSAkdm0gPSByZWYoJGNvbnRleHQpIGVxICJJRExDb25zdGFudCIgPyAiIiA6
ICIgdm0iOworICAgIG15ICR0aGlzT2JqZWN0ID0gcmVmKCRjb250ZXh0KSBlcSAiSURMT3BlcmF0
aW9uIiA/ICIgdGhpc09iamVjdCIgOiAiIjsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRp
YyBKU1ZhbHVlICR7dmFsdWVDYWxsYmFja05hbWV9KFZNJiR7dm19LCBKU09iamVjdCoke3RoaXNP
YmplY3R9KVxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtqc1ZhbHVlfTtcbiIpOworICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKKworICAgICMgRklYTUU6IFNoYXJlIHRoaXMgY2FsbGJhY2tzIGJl
dHdlZW4gYWxsIGludGVyZmFjZXMgdG8gcmVkdWNlIFdlYkNvcmUgYmluYXJ5IHNpemUuCisgICAg
bXkgJGlzRW5hYmxlZENhbGxiYWNrTmFtZSA9ICJpc0VuYWJsZWQke25hbWVTdWZmaXh9IjsKKyAg
ICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBib29sICR7aXNFbmFibGVkQ2FsbGJhY2tOYW1l
fShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAiIC4g
R2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwgJGNvbnRl
eHQsICJnbG9iYWxPYmplY3QiKSAuICI7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
biIpOworCisgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25h
bDsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CisKKyAgICByZXR1cm4gKCR2YWx1ZUNh
bGxiYWNrTmFtZSwgJGlzRW5hYmxlZENhbGxiYWNrTmFtZSk7Cit9CisKIHN1YiBHZW5lcmF0ZVBy
b3BlcnRpZXNIYXNoVGFibGUKIHsKLSAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlzSW5z
dGFuY2UsICRoYXNoS2V5cywgJGhhc2hTcGVjaWFscywgJGhhc2hWYWx1ZTEsICRoYXNoVmFsdWUy
LCAkY29uZGl0aW9uYWxzLCAkcmVhZFdyaXRlQ29uZGl0aW9uYWxzLCAkcnVudGltZUVuYWJsZWRP
cGVyYXRpb25zLCAkcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzKSA9IEBfOworICAgIG15ICgkaW50
ZXJmYWNlLCAkY29udGV4dE5hbWUsICRoYXNoS2V5cywgJGhhc2hTcGVjaWFscywgJGhhc2hWYWx1
ZTEsICRoYXNoVmFsdWUyLCAkY29uZGl0aW9uYWxzLCAkcmVhZFdyaXRlQ29uZGl0aW9uYWxzKSA9
IEBfOwogCi0gICAgIyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGZ1bmN0aW9ucyBvbiAkaW50ZXJm
YWNlLgogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKLSAg
ICBteSAkY2xhc3NOYW1lID0gIkpTJGludGVyZmFjZU5hbWUiOwotICAgIAotICAgICMgLSBBZGQg
YWxsIHByb3BlcnRpZXMgaW4gYSBoYXNodGFibGUgZGVmaW5pdGlvbgotICAgIG15ICRwcm9wZXJ0
eUNvdW50ID0gJGlzSW5zdGFuY2UgPyBJbnN0YW5jZVByb3BlcnR5Q291bnQoJGludGVyZmFjZSkg
OiBQcm90b3R5cGVQcm9wZXJ0eUNvdW50KCRpbnRlcmZhY2UpOworICAgIG15ICRwcm9wZXJ0eUNv
dW50ID0gMDsKKyAgICBteSAkaGFzU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXMgPSAiZmFsc2Ui
OwogCi0gICAgaWYgKCEkaXNJbnN0YW5jZSAmJiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkoJGlu
dGVyZmFjZSkpIHsKLSAgICAgICAgZGllIGlmICEkcHJvcGVydHlDb3VudDsKKyAgICBteSAkaXND
b25zdHJ1Y3RvciA9ICRjb250ZXh0TmFtZSBlcSBDT05URVhUX05BTUVfQ09OU1RSVUNUT1I7Cisg
ICAgbXkgJGlzUHJvdG90eXBlID0gJGNvbnRleHROYW1lIGVxIENPTlRFWFRfTkFNRV9QUk9UT1RZ
UEU7CisgICAgbXkgJGlzSW5zdGFuY2UgPSAkY29udGV4dE5hbWUgZXEgQ09OVEVYVF9OQU1FX0lO
U1RBTkNFOworCisgICAgaWYgKCRpc1Byb3RvdHlwZSAmJiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVy
dHkoJGludGVyZmFjZSkpIHsKICAgICAgICAgcHVzaChAJGhhc2hLZXlzLCAiY29uc3RydWN0b3Ii
KTsKICAgICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1
Y3RvciI7CiAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKIAogICAgICAgICBw
dXNoKEAkaGFzaFZhbHVlMiwgIjAiKTsKICAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgInN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkiKTsK
KyAgICAgICAgJHByb3BlcnR5Q291bnQrKzsKKyAgICAgICAgJGhhc1NldHRlck9yUmVhZG9ubHlQ
cm9wZXJ0aWVzID0gInRydWUiOwogICAgIH0KIAotICAgIHJldHVybiAwIGlmICEkcHJvcGVydHlD
b3VudDsKLQogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1
dGVzfSkgewotICAgICAgICBuZXh0IGlmICgkYXR0cmlidXRlLT5pc1N0YXRpYyk7CiAgICAgICAg
IG5leHQgaWYgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpICE9ICRpc0luc3RhbmNlOworICAgICAgICBuZXh0IGlmICgkYXR0cmlidXRlLT5pc1N0YXRp
YyB8fCAwKSAhPSAkaXNDb25zdHJ1Y3RvcjsKICAgICAgICAgbmV4dCBpZiAoJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9IGFuZCBub3QgJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGljSWRlbnRpZmllcn0pOwogCi0gICAgICAgICMg
R2xvYmFsIG9iamVjdHMgYWRkIFJ1bnRpbWVFbmFibGVkIGF0dHJpYnV0ZXMgYWZ0ZXIgY3JlYXRp
b24gc28gZG8gbm90IGFkZCB0aGVtIHRvIHRoZSBzdGF0aWMgdGFibGUuCi0gICAgICAgIGlmICgk
aXNJbnN0YW5jZSAmJiBOZWVkc1J1bnRpbWVDaGVjaygkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkg
ewotICAgICAgICAgICAgJHByb3BlcnR5Q291bnQgLT0gMTsKLSAgICAgICAgICAgIG5leHQ7Ci0g
ICAgICAgIH0KLQogICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAg
IHB1c2goQCRoYXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgIG15ICRzcGVjaWFsID0gR2V0SlND
QXR0cmlidXRlc0ZvckF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAg
cHVzaChAJGhhc2hTcGVjaWFscywgJHNwZWNpYWwpOwotCi0gICAgICAgIGlmICgkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9KSB7Ci0gICAgICAgICAgICBwdXNoKEAkaGFz
aFZhbHVlMSwgIiZET01KSVRBdHRyaWJ1dGVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUpKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1l
KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgcHVzaChA
JGhhc2hWYWx1ZTEsICRnZXR0ZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKElzUmVhZG9u
bHkoJGF0dHJpYnV0ZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRy
aWJ1dGUtPnR5cGUpKSB7Ci0gICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgIjAiKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0
ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAg
cHVzaChAJGhhc2hWYWx1ZTIsICRzZXR0ZXIpOwotICAgICAgICB9Ci0KICAgICAgICAgbXkgJGNv
bmRpdGlvbmFsID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9
OwogICAgICAgICAkY29uZGl0aW9uYWxzLT57JG5hbWV9ID0gJGNvbmRpdGlvbmFsIGlmICRjb25k
aXRpb25hbDsKICAgICAgICAgbXkgJHJlYWRXcml0ZUNvbmRpdGlvbmFsID0gJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWxseVJlYWRXcml0ZX07CiAgICAgICAgICRy
ZWFkV3JpdGVDb25kaXRpb25hbHMtPnskbmFtZX0gPSAkcmVhZFdyaXRlQ29uZGl0aW9uYWwgaWYg
JHJlYWRXcml0ZUNvbmRpdGlvbmFsOwogCi0gICAgICAgIG15ICRuZWVkc1J1bnRpbWVDaGVjayA9
IE5lZWRzUnVudGltZUNoZWNrKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotICAgICAgICBteSAk
bmVlZHNSdW50aW1lUmVhZFdyaXRlQ2hlY2sgPSBOZWVkc1J1bnRpbWVSZWFkV3JpdGVDaGVjaygk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgCi0gICAgICAgIGlmICgkbmVlZHNSdW50
aW1lQ2hlY2sgJiYgJG5lZWRzUnVudGltZVJlYWRXcml0ZUNoZWNrKSB7Ci0gICAgICAgICAgICBk
aWUgIkJlaW5nIGJvdGggcnVudGltZSBlbmFibGVkIGFuZCBydW50aW1lIGNvbmRpdGlvbmFsbHkg
cmVhZC13cml0ZSBpcyBub3QgeWV0IHN1cHBvcnRlZCAodXNlZCBvbiB0aGUgJyR7bmFtZX0nIGF0
dHJpYnV0ZSBvZiAnJHtpbnRlcmZhY2VOYW1lfScpLlxuIjsKLSAgICAgICAgfQorICAgICAgICBp
ZiAoTmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIHsKKyAgICAgICAg
ICAgIGFzc2VydCgiVXNpbmcgRE9NSklUIHdpdGggcnVudGltZSBlbmFibGVkIGF0dHJpYnV0ZXMg
aXMgbm90IHlldCBzdXBwb3J0ZWQgKHVzZWQgb24gdGhlICcke25hbWV9JyBhdHRyaWJ1dGUgb2Yg
JyR7aW50ZXJmYWNlTmFtZX0nKS4iKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntET01KSVR9OworICAgICAgICAgICAgYXNzZXJ0KCJVc2luZyBDb25kaXRpb25hbGx5UmVhZFdy
aXRlIHdpdGggcnVudGltZSBlbmFibGVkIGF0dHJpYnV0ZXMgaXMgbm90IHlldCBzdXBwb3J0ZWQg
KHVzZWQgb24gdGhlICcke25hbWV9JyBhdHRyaWJ1dGUgb2YgJyR7aW50ZXJmYWNlTmFtZX0nKS4i
KSBpZiAkcmVhZFdyaXRlQ29uZGl0aW9uYWw7CiAKLSAgICAgICAgaWYgKCRuZWVkc1J1bnRpbWVD
aGVjayB8fCAkbmVlZHNSdW50aW1lUmVhZFdyaXRlQ2hlY2spIHsKLSAgICAgICAgICAgIHB1c2go
QCRydW50aW1lRW5hYmxlZEF0dHJpYnV0ZXMsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkg
JGpzVmFsdWUgPSBHZXRBdHRyaWJ1dGVKU1ZhbHVlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwor
ICAgICAgICAgICAgbXkgKCR2YWx1ZUNhbGxiYWNrTmFtZSwgJGlzRW5hYmxlZENhbGxiYWNrTmFt
ZSkgPSBHZW5lcmF0ZUxhenlQcm9wZXJ0eUNhbGxiYWNrcygkaW50ZXJmYWNlLCAkYXR0cmlidXRl
LCAkanNWYWx1ZSwgJGNvbnRleHROYW1lLCAkY29uZGl0aW9uYWwpOworICAgICAgICAgICAgcHVz
aChAJGhhc2hWYWx1ZTEsICR2YWx1ZUNhbGxiYWNrTmFtZSk7CisgICAgICAgICAgICBwdXNoKEAk
aGFzaFZhbHVlMiwgJGlzRW5hYmxlZENhbGxiYWNrTmFtZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMSwgR2V0QXR0cmlidXRlR2V0dGVyKCRpbnRlcmZh
Y2UsICRhdHRyaWJ1dGUpKTsKKyAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCBHZXRBdHRy
aWJ1dGVTZXR0ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpOwogICAgICAgICB9CisKKyAgICAg
ICAgcHVzaChAJGhhc2hTcGVjaWFscywgU3RyaW5naWZ5SlNDQXR0cmlidXRlcyhHZXRKU0NBdHRy
aWJ1dGVzRm9yQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpKSk7CisgICAgICAgICRw
cm9wZXJ0eUNvdW50Kys7CisgICAgICAgICRoYXNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcyA9
ICJ0cnVlIjsKICAgICB9CiAKICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFj
ZS0+b3BlcmF0aW9uc30pIHsKKyAgICAgICAgbmV4dCBpZiAkaW50ZXJmYWNlLT5pc0NhbGxiYWNr
OworICAgICAgICBuZXh0IGlmICgkb3BlcmF0aW9uLT5pc1N0YXRpYyB8fCAwKSAhPSAkaXNDb25z
dHJ1Y3RvcjsKICAgICAgICAgbmV4dCBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57UHJpdmF0ZUlkZW50aWZpZXJ9IGFuZCBub3QgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UHVibGljSWRlbnRpZmllcn0pOwotICAgICAgICBuZXh0IGlmICgkb3BlcmF0aW9uLT5p
c1N0YXRpYyk7CiAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYm
ICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CiAgICAgICAgIG5leHQgaWYgT3BlcmF0
aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pICE9ICRpc0luc3Rh
bmNlOwogICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPm5hbWUgZXEgIltTeW1ib2wuSXRlcmF0
b3JdIjsKIAotICAgICAgICAjIEdsb2JhbCBvYmplY3RzIGFkZCBSdW50aW1lRW5hYmxlZCBvcGVy
YXRpb25zIGFmdGVyIGNyZWF0aW9uIHNvIGRvIG5vdCBhZGQgdGhlbSB0byB0aGUgc3RhdGljIHRh
YmxlLgotICAgICAgICBpZiAoJGlzSW5zdGFuY2UgJiYgTmVlZHNSdW50aW1lQ2hlY2soJGludGVy
ZmFjZSwgJG9wZXJhdGlvbikpIHsKLSAgICAgICAgICAgICRwcm9wZXJ0eUNvdW50IC09IDE7Ci0g
ICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0KICAgICAgICAgbXkgJG5hbWUgPSAkb3BlcmF0
aW9uLT5uYW1lOwogICAgICAgICBwdXNoKEAkaGFzaEtleXMsICRuYW1lKTsKIAotICAgICAgICBt
eSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRvcGVyYXRpb24pOwotICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMSwgJGZ1bmN0aW9uTmFtZSk7
CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9IEdldENvbmRpdGlvbmFsRm9yT3BlcmF0aW9uQ29u
c2lkZXJpbmdPdmVybG9hZHMoJG9wZXJhdGlvbik7CisgICAgICAgICRjb25kaXRpb25hbHMtPnsk
bmFtZX0gPSAkY29uZGl0aW9uYWwgaWYgJGNvbmRpdGlvbmFsOwogCi0gICAgICAgIG15ICRmdW5j
dGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRvcGVyYXRpb24pOworICAgICAgICBpZiAo
TmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwgJG9wZXJhdGlvbikpIHsKKyAgICAgICAgICAg
IGFzc2VydCgiVXNpbmcgRE9NSklUIHdpdGggcnVudGltZSBlbmFibGVkIG9wZXJhdGlvbnMgaXMg
bm90IHlldCBzdXBwb3J0ZWQgKHVzZWQgb24gdGhlICcke25hbWV9JyBvcGVyYXRpb24gb2YgJyR7
aW50ZXJmYWNlTmFtZX0nKS4iKSBpZiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntE
T01KSVR9OwogCi0gICAgICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntE
T01KSVR9KSB7Ci0gICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgIiZET01KSVRTaWduYXR1
cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2Zp
cnN0KCRvcGVyYXRpb24tPm5hbWUpKTsKKyAgICAgICAgICAgIG15ICRqc1ZhbHVlID0gR2V0T3Bl
cmF0aW9uSlNWYWx1ZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uLCAidGhpc09iamVjdC0+Z2xvYmFs
T2JqZWN0KCkiKTsKKyAgICAgICAgICAgIG15ICgkdmFsdWVDYWxsYmFja05hbWUsICRpc0VuYWJs
ZWRDYWxsYmFja05hbWUpID0gR2VuZXJhdGVMYXp5UHJvcGVydHlDYWxsYmFja3MoJGludGVyZmFj
ZSwgJG9wZXJhdGlvbiwgJGpzVmFsdWUsICRjb250ZXh0TmFtZSwgJGNvbmRpdGlvbmFsKTsKKyAg
ICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUxLCAkdmFsdWVDYWxsYmFja05hbWUpOworICAgICAg
ICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRpc0VuYWJsZWRDYWxsYmFja05hbWUpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0
aCk7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMSwgR2V0RnVuY3Rpb25OYW1lKCRpbnRl
cmZhY2UsICRpbnRlcmZhY2UtPmNsYXNzTmFtZSwgJG9wZXJhdGlvbikpOworICAgICAgICAgICAg
bXkgJGZ1bmN0aW9uU2lnbmF0dXJlID0gIiZET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFj
ZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKKyAgICAg
ICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntET01KSVR9ID8gJGZ1bmN0aW9uU2lnbmF0dXJlIDogR2V0RnVuY3Rpb25MZW5ndGgoJG9wZXJh
dGlvbikpOwogICAgICAgICB9CiAKLSAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgQ29tcHV0
ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSk7CisgICAgICAgIHB1c2go
QCRoYXNoU3BlY2lhbHMsIFN0cmluZ2lmeUpTQ0F0dHJpYnV0ZXMoQ29tcHV0ZUZ1bmN0aW9uU3Bl
Y2lhbCgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSkpOworICAgICAgICAkcHJvcGVydHlDb3VudCsr
OworICAgIH0KIAotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSBHZXRDb25kaXRpb25hbEZvck9w
ZXJhdGlvbkNvbnNpZGVyaW5nT3ZlcmxvYWRzKCRvcGVyYXRpb24pOworICAgIGZvcmVhY2ggbXkg
JGNvbnN0YW50IChAeyRpbnRlcmZhY2UtPmNvbnN0YW50c30pIHsKKyAgICAgICAgbmV4dCBpZiAk
aXNJbnN0YW5jZTsKKworICAgICAgICBteSAkbmFtZSA9ICRjb25zdGFudC0+bmFtZTsKKyAgICAg
ICAgcHVzaChAJGhhc2hLZXlzLCAkbmFtZSk7CisKKyAgICAgICAgbXkgJGltcGxlbWVudGVkQnkg
PSAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworICAgICAg
ICAkaW1wbEluY2x1ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDEgaWYgJGltcGxlbWVudGVk
Qnk7CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRjb25zdGFudC0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q29uZGl0aW9uYWx9OwogICAgICAgICAkY29uZGl0aW9uYWxzLT57JG5hbWV9ID0gJGNv
bmRpdGlvbmFsIGlmICRjb25kaXRpb25hbDsKIAotICAgICAgICBpZiAoTmVlZHNSdW50aW1lQ2hl
Y2soJGludGVyZmFjZSwgJG9wZXJhdGlvbikpIHsKLSAgICAgICAgICAgIHB1c2goQCRydW50aW1l
RW5hYmxlZE9wZXJhdGlvbnMsICRvcGVyYXRpb24pOworICAgICAgICBteSAkc3BlY2lhbCA9ICIi
OworICAgICAgICBpZiAoTmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwgJGNvbnN0YW50KSkg
eworICAgICAgICAgICAgbXkgJGpzVmFsdWUgPSAianNOdW1iZXIoIiAuICRjb25zdGFudC0+dmFs
dWUgLiAiKSI7CisgICAgICAgICAgICBteSAoJHZhbHVlQ2FsbGJhY2tOYW1lLCAkaXNFbmFibGVk
Q2FsbGJhY2tOYW1lKSA9IEdlbmVyYXRlTGF6eVByb3BlcnR5Q2FsbGJhY2tzKCRpbnRlcmZhY2Us
ICRjb25zdGFudCwgJGpzVmFsdWUsICRjb250ZXh0TmFtZSwgJGNvbmRpdGlvbmFsKTsKKyAgICAg
ICAgICAgIHB1c2goQCRoYXNoVmFsdWUxLCAkdmFsdWVDYWxsYmFja05hbWUpOworICAgICAgICAg
ICAgcHVzaChAJGhhc2hWYWx1ZTIsICRpc0VuYWJsZWRDYWxsYmFja05hbWUpOworICAgICAgICAg
ICAgcHVzaChAJGhhc2hTcGVjaWFscywgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2siKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHB1c2goQCRoYXNoVmFsdWUxLCAkY29uc3RhbnQtPnZhbHVlKTsKKyAgICAgICAgICAgIHB1c2go
QCRoYXNoVmFsdWUyLCAiMCIpOworICAgICAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgIkpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciIpOwog
ICAgICAgICB9CisKKyAgICAgICAgJHByb3BlcnR5Q291bnQrKzsKKyAgICAgICAgJGhhc1NldHRl
ck9yUmVhZG9ubHlQcm9wZXJ0aWVzID0gInRydWUiOwogICAgIH0KIAotICAgIHJldHVybiAkcHJv
cGVydHlDb3VudDsKKyAgICByZXR1cm4gKCRwcm9wZXJ0eUNvdW50LCAkaGFzU2V0dGVyT3JSZWFk
b25seVByb3BlcnRpZXMpOwogfQogCiAjIFRoaXMgY29tcHV0ZXMgYW4gZWZmZWN0aXZlIG92ZXJs
b2FkIHNldCBmb3IgYSBnaXZlbiBvcGVyYXRpb24gLyBjb25zdHJ1Y3RvciwKQEAgLTM5ODcsNyAr
NDA3Niw3IEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmkKICAgICAg
ICAgICAgIHB1c2goQGNvbmp1bmN0cywgIihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigiIC4g
JGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJl
Q29udGV4dCgpIgogICAgICAgICAgICAgICAgIC4gInx8IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWxsb3dzTWVkaWFEZXZpY2VzKCkpIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBw
dXNoKEBjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkiKTsKKyAgICAg
ICAgICAgIHB1c2goQGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAk
Z2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVD
b250ZXh0KCkiKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDAwMCw3ICs0MDg5LDcgQEAgc3Vi
IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaQogCiAgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJET01XcmFwcGVyV29ybGQuaCIpOwogCi0gICAgICAgIHB1c2goQGNvbmp1bmN0
cywgIndvcmxkRm9yRE9NT2JqZWN0KCp0aGlzKS4iIC4gVG9NZXRob2ROYW1lKCRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yV29ybGR9KSAuICIoKSIpOworICAgICAgICBw
dXNoKEBjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9i
amVjdFB0ciAuICIpLT53b3JsZCgpLiIgLiBUb01ldGhvZE5hbWUoJGNvbnRleHQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0VuYWJsZWRGb3JXb3JsZH0pIC4gIigpIik7CiAgICAgfQogCiAgICAgaWYg
KCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewpAQCAt
NDM0NiwxMTQgKzQ0MzUsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIEdl
bmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbihcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAk
aW50ZXJmYWNlKSBpZiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3R9OwogCi0gICAgbXkgQGhhc2hLZXlzID0gKCk7Ci0gICAgbXkgQGhhc2hW
YWx1ZTEgPSAoKTsKLSAgICBteSBAaGFzaFZhbHVlMiA9ICgpOwotICAgIG15IEBoYXNoU3BlY2lh
bHMgPSAoKTsKLSAgICBteSAlY29uZGl0aW9uYWxzID0gKCk7Ci0gICAgbXkgJXJlYWRXcml0ZUNv
bmRpdGlvbmFscyA9ICgpOwotICAgIG15ICRoYXNoTmFtZSA9ICRjbGFzc05hbWUgLiAiVGFibGUi
OwotICAgIG15IEBydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMgPSAoKTsKLSAgICBteSBAcnVudGlt
ZUVuYWJsZWRBdHRyaWJ1dGVzID0gKCk7Ci0gICAgbXkgQHJ1bnRpbWVFbmFibGVkQ29uc3RhbnRz
ID0gKCk7Ci0KLSAgICAjIEdlbmVyYXRlIGhhc2ggdGFibGUgZm9yIHByb3BlcnRpZXMgb24gdGhl
IGluc3RhbmNlLgotICAgIG15ICRudW1JbnN0YW5jZVByb3BlcnRpZXMgPSBHZW5lcmF0ZVByb3Bl
cnRpZXNIYXNoVGFibGUoJG9iamVjdCwgJGludGVyZmFjZSwgMSwgXEBoYXNoS2V5cywgXEBoYXNo
U3BlY2lhbHMsIFxAaGFzaFZhbHVlMSwgXEBoYXNoVmFsdWUyLCBcJWNvbmRpdGlvbmFscywgXCVy
ZWFkV3JpdGVDb25kaXRpb25hbHMsIFxAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCBcQHJ1bnRp
bWVFbmFibGVkQXR0cmlidXRlcyk7Ci0gICAgJG9iamVjdC0+R2VuZXJhdGVIYXNoVGFibGUoJGNs
YXNzTmFtZSwgJGhhc2hOYW1lLCAkbnVtSW5zdGFuY2VQcm9wZXJ0aWVzLCBcQGhhc2hLZXlzLCBc
QGhhc2hTcGVjaWFscywgXEBoYXNoVmFsdWUxLCBcQGhhc2hWYWx1ZTIsIFwlY29uZGl0aW9uYWxz
LCBcJXJlYWRXcml0ZUNvbmRpdGlvbmFscywgMCkgaWYgJG51bUluc3RhbmNlUHJvcGVydGllcyA+
IDA7Ci0KICAgICAjIC0gQWRkIGFsbCBpbnRlcmZhY2Ugb2JqZWN0IChha2EgY29uc3RydWN0b3Ip
IHByb3BlcnRpZXMgKGNvbnN0YW50cywgc3RhdGljIGF0dHJpYnV0ZXMsIHN0YXRpYyBvcGVyYXRp
b25zKS4KICAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0fSkgewotICAgICAgICBteSAkaGFzaFNpemUgPSAwOwotICAgICAgICBt
eSAkaGFzaE5hbWUgPSAkY2xhc3NOYW1lIC4gIkNvbnN0cnVjdG9yVGFibGUiOwotCi0gICAgICAg
IG15IEBoYXNoS2V5cyA9ICgpOwotICAgICAgICBteSBAaGFzaFZhbHVlMSA9ICgpOwotICAgICAg
ICBteSBAaGFzaFZhbHVlMiA9ICgpOwotICAgICAgICBteSBAaGFzaFNwZWNpYWxzID0gKCk7Ci0g
ICAgICAgIG15ICVjb25kaXRpb25hbHMgPSAoKTsKLSAgICAgICAgbXkgJXJlYWRXcml0ZUNvbmRp
dGlvbmFscyA9ICgpOwotCi0gICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0YW50IChAeyRpbnRlcmZh
Y2UtPmNvbnN0YW50c30pIHsKLSAgICAgICAgICAgIG15ICRuYW1lID0gJGNvbnN0YW50LT5uYW1l
OwotICAgICAgICAgICAgcHVzaChAaGFzaEtleXMsICRuYW1lKTsKLSAgICAgICAgICAgIHB1c2go
QGhhc2hWYWx1ZTEsICRjb25zdGFudC0+dmFsdWUpOwotICAgICAgICAgICAgcHVzaChAaGFzaFZh
bHVlMiwgIjAiKTsKLSAgICAgICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywgIkpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciIpOwotCi0gICAgICAg
ICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRjb25zdGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
SW1wbGVtZW50ZWRCeX07Ci0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke2ltcGxlbWVudGVk
Qnl9LmgifSA9IDEgaWYgJGltcGxlbWVudGVkQnk7Ci0KLSAgICAgICAgICAgIG15ICRjb25kaXRp
b25hbCA9ICRjb25zdGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OwotICAg
ICAgICAgICAgJGNvbmRpdGlvbmFsc3skbmFtZX0gPSAkY29uZGl0aW9uYWwgaWYgJGNvbmRpdGlv
bmFsOwotCi0gICAgICAgICAgICBpZiAoTmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwgJGNv
bnN0YW50KSkgewotICAgICAgICAgICAgICAgIHB1c2goQHJ1bnRpbWVFbmFibGVkQ29uc3RhbnRz
LCAkY29uc3RhbnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAkaGFzaFNpemUrKzsK
LSAgICAgICAgfQotCi0gICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNl
LT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCRhdHRyaWJ1dGUtPmlz
U3RhdGljKTsKLSAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKLSAgICAg
ICAgICAgIHB1c2goQGhhc2hLZXlzLCAkbmFtZSk7Ci0KLSAgICAgICAgICAgIG15IEBzcGVjaWFs
cyA9ICgpOwotICAgICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIikgaWYgSXNMZWdhY3lVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0
cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkiKSBpZiBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpOwotICAgICAgICAgICAg
cHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUiKSBp
ZiBJc0FjY2VsZXJhdGVkRE9NQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotICAg
ICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRB
dHRyaWJ1dGUiKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9Owot
ICAgICAgICAgICAgbXkgJHNwZWNpYWwgPSAic3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCIgLiAoKEBz
cGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIwIikgLiAiKSI7Ci0gICAg
ICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsICRzcGVjaWFsKTsKLQotICAgICAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBoYXNoVmFsdWUxLCAiJkRPTUpJVEF0dHJpYnV0ZUZvciIgLiAkaW50ZXJmYWNl
LT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+bmFt
ZSkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0g
R2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRl
KTsKLSAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAiMCIpOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBo
YXNoVmFsdWUyLCAkc2V0dGVyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXkgJGNv
bmRpdGlvbmFsID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9
OwotICAgICAgICAgICAgJGNvbmRpdGlvbmFsc3skbmFtZX0gPSAkY29uZGl0aW9uYWwgaWYgJGNv
bmRpdGlvbmFsOwotCi0gICAgICAgICAgICBteSAkcmVhZFdyaXRlQ29uZGl0aW9uYWwgPSAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbGx5UmVhZFdyaXRlfTsKLSAg
ICAgICAgICAgICRyZWFkV3JpdGVDb25kaXRpb25hbHN7JG5hbWV9ID0gJHJlYWRXcml0ZUNvbmRp
dGlvbmFsIGlmICRyZWFkV3JpdGVDb25kaXRpb25hbDsKLQotICAgICAgICAgICAgJGhhc2hTaXpl
Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVy
ZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzICgkb3BlcmF0aW9u
LT5pc1N0YXRpYyk7Ci0gICAgICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPntvdmVybG9hZElu
ZGV4fSAmJiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwotICAgICAgICAgICAgbXkg
JG5hbWUgPSAkb3BlcmF0aW9uLT5uYW1lOwotICAgICAgICAgICAgcHVzaChAaGFzaEtleXMsICRu
YW1lKTsKLQotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHB1c2goQGhh
c2hWYWx1ZTEsICRmdW5jdGlvbk5hbWUpOwotCi0gICAgICAgICAgICBteSAkZnVuY3Rpb25MZW5n
dGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkb3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGlmICgkb3Bl
cmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9KSB7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaGFzaFZhbHVlMiwgIkRPTUpJVEZ1bmN0aW9uRm9yIiAuICRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkb3BlcmF0aW9uLT5uYW1lKSk7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICRm
dW5jdGlvbkxlbmd0aCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHB1c2goQGhhc2hT
cGVjaWFscywgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSk7
Ci0KLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKLSAgICAgICAgICAgICRjb25kaXRpb25hbHN7JG5hbWV9
ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRpb25hbDsKLQotICAgICAgICAgICAgJGhhc2hTaXpl
Kys7Ci0gICAgICAgIH0KLQotICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUhhc2hUYWJsZSgkY2xh
c3NOYW1lLCAkaGFzaE5hbWUsICRoYXNoU2l6ZSwgXEBoYXNoS2V5cywgXEBoYXNoU3BlY2lhbHMs
IFxAaGFzaFZhbHVlMSwgXEBoYXNoVmFsdWUyLCBcJWNvbmRpdGlvbmFscywgXCVyZWFkV3JpdGVD
b25kaXRpb25hbHMsIDEpIGlmICRoYXNoU2l6ZSA+IDA7CisgICAgICAgICMgRklYTUU6IEdlbmVy
YXRlIGNvbnN0cnVjdG9yJ3MgaGFzaCB0YWJsZSBpbiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVy
TWV0aG9kcywgcmVtb3ZpbmcgQ29uc3RydWN0b3JIYXNQcm9wZXJ0aWVzIGFuZCB1bnVzZWQgJHBy
b3RvQ2xhc3NOYW1lLgorICAgICAgICBHZW5lcmF0ZUhhc2hUYWJsZSgkaW50ZXJmYWNlLCBDT05U
RVhUX05BTUVfQ09OU1RSVUNUT1IpOwogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkaW50
ZXJmYWNlKSk7CiAKQEAgLTQ0NjQsOTQgKzQ0NDksMzMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRl
bnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGxlZ2FjeUZhY3RvcnlGdW5jdGlvbiwg
JGludGVyZmFjZSwgIkdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKSBpZiAkbGVnYWN5
RmFjdG9yeUZ1bmN0aW9uOwogICAgIH0KIAotICAgICMgLSBBZGQgZnVuY3Rpb25zIGFuZCBjb25z
dGFudHMgdG8gYSBoYXNodGFibGUgZGVmaW5pdGlvbgotCi0gICAgJGhhc2hOYW1lID0gJGNsYXNz
TmFtZSAuICJQcm90b3R5cGVUYWJsZSI7Ci0KLSAgICBAaGFzaEtleXMgPSAoKTsKLSAgICBAaGFz
aFZhbHVlMSA9ICgpOwotICAgIEBoYXNoVmFsdWUyID0gKCk7Ci0gICAgQGhhc2hTcGVjaWFscyA9
ICgpOwotICAgICVjb25kaXRpb25hbHMgPSAoKTsKLSAgICAlcmVhZFdyaXRlQ29uZGl0aW9uYWxz
ID0gKCk7Ci0gICAgQHJ1bnRpbWVFbmFibGVkT3BlcmF0aW9ucyA9ICgpOwotICAgIEBydW50aW1l
RW5hYmxlZEF0dHJpYnV0ZXMgPSAoKTsKLQotICAgICMgR2VuZXJhdGUgaGFzaCB0YWJsZSBmb3Ig
cHJvcGVydGllcyBvbiB0aGUgcHJvdG90eXBlLgotICAgIG15ICRudW1Qcm90b3R5cGVQcm9wZXJ0
aWVzID0gR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKCRvYmplY3QsICRpbnRlcmZhY2UsIDAs
Ci0gICAgICAgIFxAaGFzaEtleXMsIFxAaGFzaFNwZWNpYWxzLAotICAgICAgICBcQGhhc2hWYWx1
ZTEsIFxAaGFzaFZhbHVlMiwKLSAgICAgICAgXCVjb25kaXRpb25hbHMsIFwlcmVhZFdyaXRlQ29u
ZGl0aW9uYWxzLAotICAgICAgICBcQHJ1bnRpbWVFbmFibGVkT3BlcmF0aW9ucywgXEBydW50aW1l
RW5hYmxlZEF0dHJpYnV0ZXMpOwotCi0gICAgbXkgJGhhc2hTaXplID0gJG51bVByb3RvdHlwZVBy
b3BlcnRpZXM7Ci0KLSAgICBmb3JlYWNoIG15ICRjb25zdGFudCAoQHskaW50ZXJmYWNlLT5jb25z
dGFudHN9KSB7Ci0gICAgICAgIG15ICRuYW1lID0gJGNvbnN0YW50LT5uYW1lOwotCi0gICAgICAg
IHB1c2goQGhhc2hLZXlzLCAkbmFtZSk7Ci0gICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRjb25z
dGFudC0+dmFsdWUpOwotICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAiMCIpOwotICAgICAgICBw
dXNoKEBoYXNoU3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDb25zdGFudEludGVnZXIiKTsKLQotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkY29uc3Rh
bnQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKLSAgICAgICAgJGNvbmRpdGlv
bmFsc3skbmFtZX0gPSAkY29uZGl0aW9uYWwgaWYgJGNvbmRpdGlvbmFsOwotCi0gICAgICAgICRo
YXNoU2l6ZSsrOwotICAgIH0KLQogICAgIGlmICghJGludGVyZmFjZS0+aXNOYW1lc3BhY2VPYmpl
Y3QpIHsKLSAgICAgICAgbXkgJGp1c3RHZW5lcmF0ZVZhbHVlQXJyYXkgPSAhSXNET01HbG9iYWxP
YmplY3QoJGludGVyZmFjZSk7Ci0KLSAgICAgICAgJG9iamVjdC0+R2VuZXJhdGVIYXNoVGFibGUo
JGNsYXNzTmFtZSwgJGhhc2hOYW1lLCAkaGFzaFNpemUsIFxAaGFzaEtleXMsIFxAaGFzaFNwZWNp
YWxzLCBcQGhhc2hWYWx1ZTEsIFxAaGFzaFZhbHVlMiwgXCVjb25kaXRpb25hbHMsIFwlcmVhZFdy
aXRlQ29uZGl0aW9uYWxzLCAkanVzdEdlbmVyYXRlVmFsdWVBcnJheSk7Ci0KLSAgICAgICAgbXkg
JHByb3RvdHlwZUhhc2hUYWJsZSA9ICRqdXN0R2VuZXJhdGVWYWx1ZUFycmF5ID8gIm51bGxwdHIi
IDogIiYke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSI7CisgICAgICAgIG15ICRwcm90b3R5cGVI
YXNoVGFibGUgPSBHZW5lcmF0ZUhhc2hUYWJsZSgkaW50ZXJmYWNlLCBDT05URVhUX05BTUVfUFJP
VE9UWVBFKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJjb25zdCBDbGFzc0luZm8gJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1c
IiwgJkJhc2U6OnNfaW5mbywgJHtwcm90b3R5cGVIYXNoVGFibGV9LCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKCR7Y2xhc3NOYW1lfVByb3RvdHlwZSkgfTtcblxuIik7CiAKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTtc
biIpOwotICAgIH0KLQotICAgIGlmIChQcm90b3R5cGVIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKCRp
bnRlcmZhY2UpICYmICFJc0dsb2JhbEludGVyZmFjZSgkaW50ZXJmYWNlKSAmJiAhJGludGVyZmFj
ZS0+aXNOYW1lc3BhY2VPYmplY3QpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCAke2NsYXNzTmFtZX06OmluZm8oKSwgJHtjbGFzc05h
bWV9UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTtcbiIpOwotCi0gICAgICAgIG15IEBydW50
aW1lRW5hYmxlZFByb3BlcnRpZXMgPSBAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zOwotICAgICAg
ICBwdXNoKEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMsIEBydW50aW1lRW5hYmxlZEF0dHJpYnV0
ZXMpOwotICAgICAgICBwdXNoKEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMsIEBydW50aW1lRW5h
YmxlZENvbnN0YW50cyk7CiAKLSAgICAgICAgaWYgKEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMp
IHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IGZhbHNlO1xuIik7CisgICAgICAgIGlmICgkcHJvdG90eXBlSGFz
aFRhYmxlIG5lICJudWxscHRyIiAmJiAhSXNHbG9iYWxJbnRlcmZhY2UoJGludGVyZmFjZSkpIHsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJlaWZ5U3RhdGljUHJvcGVydGll
cyh2bSwgJHtjbGFzc05hbWV9OjppbmZvKCksICR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlVmFs
dWVzLCAqdGhpcyk7XG4iKTsKICAgICAgICAgfQogCi0gICAgICAgIGZvcmVhY2ggbXkgJG9wZXJh
dGlvbk9yQXR0cmlidXRlIChAcnVudGltZUVuYWJsZWRQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAg
ICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkb3BlcmF0aW9uT3JBdHRyaWJ1dGUpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKLSAgICAgICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcgPSBH
ZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNlLCAkb3BlcmF0
aW9uT3JBdHRyaWJ1dGUsICJnbG9iYWxPYmplY3QoKSIpOwotICAgICAgICAgICAgbXkgJG5hbWUg
PSAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPm5hbWU7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoISR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFt
ZVwiKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDtcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzKSB7Cisg
ICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkg
ewogICAgICAgICAgICAgaWYgKE5lZWRzUnVudGltZVJlYWRXcml0ZUNoZWNrKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNv
cmVKU0NsaWVudERhdGEuaCIpOwogICAgICAgICAgICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29u
ZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygk
aW50ZXJmYWNlLCAkYXR0cmlidXRlLCAiZ2xvYmFsT2JqZWN0KCkiKTsKIAogICAgICAgICAgICAg
ICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKKyAgICAgICAgICAgICAg
ICAjIEZJWE1FOiBTaW1wbGlmeSB0aGlzIGJ5IGNhbGxpbmcgcmVpZnlTdGF0aWNQcm9wZXJ0eSgp
IG9uIGEgSGFzaFRhYmxlVmFsdWUgdGhhdCBoYXMgYmVlbiB0cmFuc2Zvcm1lZCB0byByZWFkLW9u
bHkuCiAgICAgICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUo
JGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgbXkg
JHNldHRlciA9ICJudWxscHRyIjsKLSAgICAgICAgICAgICAgICBteSAkanNjQXR0cmlidXRlcyA9
IEdldEpTQ0F0dHJpYnV0ZXNGb3JBdHRyaWJ1dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Cisg
ICAgICAgICAgICAgICAgbXkgJGpzY0F0dHJpYnV0ZXMgPSBTdHJpbmdpZnlKU0NBdHRyaWJ1dGVz
KEdldEpTQ0F0dHJpYnV0ZXNGb3JBdHRyaWJ1dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIC4g
IiB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IjsKKyAgICAgICAgICAgICAgICBh
c3NlcnQoIkJlaW5nIGJvdGggcnVudGltZSBlbmFibGVkIGFuZCBydW50aW1lIGNvbmRpdGlvbmFs
bHkgcmVhZC13cml0ZSBpcyBub3QgeWV0IHN1cHBvcnRlZCAodXNlZCBvbiB0aGUgJyR7YXR0cmli
dXRlTmFtZX0nIGF0dHJpYnV0ZSBvZiAnJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX0nKS4iKSBpZiBO
ZWVkc1J1bnRpbWVDaGVjaygkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKIAogICAgICAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRp
dGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gQWRkaW5nIGJhY2sg
YXR0cmlidXRlLCBidXQgYXMgcmVhZG9ubHksIGFmdGVyIHJlbW92aW5nIHRoZSByZWFkLXdyaXRl
IHZhcmlhbnQgYWJvdmUuIFxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgLy8gU2hhZG93IHJlYWQtd3JpdGUgdmFyaWFudCBmcm9tIHRoZSBzdGF0aWMgaGFzaCB0
YWJsZS5cbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgh
JHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KVxuIik7CiAgICAgICAgICAgICAgICAg
aWYgKElzQWNjZWxlcmF0ZWRET01BdHRyaWJ1dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgbXkgJGNsYXNzRm9yVGhpcyA9ICIke2NsYXNzTmFtZX06Omlu
Zm8oKSI7CkBAIC00NTY0LDQ5ICs0NDg4LDMxIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoQHJ1bnRpbWVFbmFibGVk
UHJvcGVydGllcykgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgp
KVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZmxhdHRlbkRp
Y3Rpb25hcnlPYmplY3Qodm0pO1xuIik7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JlYWNoIG15
ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAgICAgIG5l
eHQgdW5sZXNzICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRp
Zmllcn0pOwotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0NsaWVudERh
dGEuaCIpOwotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGly
ZWN0KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS4iIC4gJG9wZXJhdGlvbi0+bmFtZSAuICJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwgIiAuIEdldEZ1bmN0
aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKSAuICIpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgfQotCiAgICAgICAgIGlmIChJbnRlcmZhY2VO
ZWVkc0l0ZXJhdG9yKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPiIpOwogICAgICAgICAgICAgaWYgKElz
S2V5VmFsdWVJdGVyYWJsZUludGVyZmFjZSgkaW50ZXJmYWNlKSBvciAkaW50ZXJmYWNlLT5tYXBM
aWtlIG9yICRpbnRlcmZhY2UtPnNldExpa2UpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJp
ZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGF1dG8mIGVudHJpZXMgPSB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5l
bnRyaWVzUHVibGljTmFtZSgpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaW5mbygpLCBlbnRyaWVzLCAqaW5mbygp
LT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShlbnRyaWVzKSwgKnRoaXMpO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qodm0s
IGVudHJpZXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiPEphdmFTY3JpcHRDb3JlL0FycmF5UHJvdG90eXBlLmg+Iik7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0KCktPmFycmF5UHJvdG90
eXBlKCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFs
dWVzUHJpdmF0ZU5hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sLCBnbG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgYWRkVmFsdWVJdGVyYWJsZU1ldGhvZHMoKmdsb2JhbE9iamVjdCgpLCAqdGhp
cyk7XG4iKSBpZiAkaW50ZXJmYWNlLT5pdGVyYWJsZSBhbmQgIUlzS2V5VmFsdWVJdGVyYWJsZUlu
dGVyZmFjZSgkaW50ZXJmYWNlKTsKIAogICAgICAgICBhZGRVbnNjb3BhYmxlUHJvcGVydGllcygk
aW50ZXJmYWNlKTsKLSAgICB9Ci0KLSAgICBhc3NlcnQoIkpTQ19UT19TVFJJTkdfVEFHX1dJVEhP
VVRfVFJBTlNJVElPTigpIHJlcXVpcmVzIHN0cmluZ3MgdHdvIG9yIG1vcmUgY2hhcmFjdGVycyBs
b25nIikgaWYgbGVuZ3RoKCR2aXNpYmxlSW50ZXJmYWNlTmFtZSkgPCAyOwogCi0gICAgaWYgKCEk
aW50ZXJmYWNlLT5pc05hbWVzcGFjZU9iamVjdCkgeworICAgICAgICBhc3NlcnQoIkpTQ19UT19T
VFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpIHJlcXVpcmVzIHN0cmluZ3MgdHdvIG9yIG1v
cmUgY2hhcmFjdGVycyBsb25nLiIpIGlmIGxlbmd0aCgkdmlzaWJsZUludGVyZmFjZU5hbWUpIDwg
MjsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDX1RPX1NUUklOR19UQUdfV0lU
SE9VVF9UUkFOU0lUSU9OKCk7XG4iKTsKKworICAgICAgICBHZW5lcmF0ZVByaXZhdGVJZGVudGlm
aWVycygkaW50ZXJmYWNlLCBDT05URVhUX05BTUVfUFJPVE9UWVBFKTsKKwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCi0gICAgIyAtIEluaXRpYWxpemUgc3Rh
dGljIENsYXNzSW5mbyBvYmplY3QKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENsYXNz
SW5mbyAkY2xhc3NOYW1lIiAuICI6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1l
fVwiLCAmQmFzZTo6c19pbmZvLCAiKTsKKyAgICBteSAkaW5zdGFuY2VIYXNoVGFibGUgPSBHZW5l
cmF0ZUhhc2hUYWJsZSgkaW50ZXJmYWNlLCBDT05URVhUX05BTUVfSU5TVEFOQ0UpOworICAgIHB1
c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfTo6c19pbmZvID0g
eyBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIsICZCYXNlOjpzX2luZm8sICR7aW5zdGFuY2VI
YXNoVGFibGV9Iik7CiAKLSAgICBpZiAoJG51bUluc3RhbmNlUHJvcGVydGllcyA+IDApIHsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICImJHtjbGFzc05hbWV9VGFibGUiKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIm51bGxwdHIiKTsKLSAgICB9CiAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNp
ZiBFTkFCTEUoSklUKVxuIik7CkBAIC00NjcyLDc4ICs0NTc4LDggQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT50b1ByaW1pdGl2ZVN5bWJvbCwganNVbmRlZmluZWQoKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CiAgICAg
fQogCi0gICAgIyBTdXBwb3J0IGZvciBSdW50aW1lRW5hYmxlZCBhdHRyaWJ1dGVzIG9uIGluc3Rh
bmNlcy4KLSAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRl
c30pIHsKLSAgICAgICAgbmV4dCB1bmxlc3MgTmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSk7Ci0gICAgICAgIG5leHQgdW5sZXNzIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0
YW5jZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICBHZW5lcmF0ZVByaXZhdGVJZGVudGlm
aWVycygkaW50ZXJmYWNlLCBDT05URVhUX05BTUVfSU5TVEFOQ0UpOwogCi0gICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKLSAgICAgICAgbXkgJHJ1bnRp
bWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlv
bmFsU3RyaW5nKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUsICJnbG9iYWxPYmplY3QoKSIpOwotICAg
ICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7Ci0gICAgICAgIG15ICRn
ZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRh
dHRyaWJ1dGUpOwotICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmlidXRlKSB8
fCAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkgPyAi
bnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRhdHRyaWJ1dGUpOwotICAgICAgICBteSAkanNjQXR0cmlidXRlcyA9IEdldEpTQ0F0dHJpYnV0
ZXNGb3JBdHRyaWJ1dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgIG15ICRpc1By
aXZhdGVBbmRQdWJsaWMgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQdWJsaWNJ
ZGVudGlmaWVyfSAmJiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRl
bnRpZmllcn07Ci0KLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke3J1bnRpbWVF
bmFibGVDb25kaXRpb25hbFN0cmluZ30pIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
IHsiKSBpZiAkaXNQcml2YXRlQW5kUHVibGljOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuIik7Ci0gICAgICAgIGFzc2VydCgiQ3VzdG9tR2V0dGVyU2V0dGVyIGlzIG5vdCBhbGxvd2Vk
IGZvciBET01BdHRyaWJ1dGUuIERPTUF0dHJpYnV0ZUdldHRlclNldHRlciBtdXN0IGJlIHVzZWQu
IikgaWYgSXNBY2NlbGVyYXRlZERPTUF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsK
LQotICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGljSWRl
bnRpZmllcn0gfHwgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVu
dGlmaWVyfSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERp
cmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpLT5idWlsdGluTmFtZXMoKS4iIC4gJGF0dHJpYnV0ZU5hbWUgLiAiUHVibGljTmFt
ZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJGdldHRlciwgJHNldHRlciksIGF0
dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzY0F0dHJpYnV0ZXMpKTtcbiIpOwotICAgICAgICB9Ci0g
ICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRp
Zmllcn0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXREaXJl
Y3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRhdHRyaWJ1dGVOYW1lIC4gIlByaXZhdGVOYW1l
KCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCAkZ2V0dGVyLCAkc2V0dGVyKSwgYXR0
cmlidXRlc0ZvclN0cnVjdHVyZSgkanNjQXR0cmlidXRlcykpO1xuIik7Ci0gICAgICAgIH0KLQot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKSBpZiAkaXNQcml2YXRlQW5kUHVi
bGljOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwotICAgIH0KLQotICAgICMgU3VwcG9ydCBQcml2YXRlSWRlbnRpZmllciBhdHRy
aWJ1dGVzIG9uIGluc3RhbmNlcy4KLSAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVy
ZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgbmV4dCBpZiBOZWVkc1J1bnRpbWVDaGVjaygk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9OwotICAgICAgICBuZXh0IHVu
bGVzcyBBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7
Ci0KLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEuaCIpOwot
ICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVD
b25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKLSAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUg
PSAkYXR0cmlidXRlLT5uYW1lOwotICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0
dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLQotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwotICAgICAgICBhc3NlcnQoIkN1c3RvbUdldHRlclNldHRlciBpcyBub3Qg
YWxsb3dlZCBmb3IgRE9NQXR0cmlidXRlLiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIgbXVzdCBi
ZSB1c2VkLiIpIGlmIElzQWNjZWxlcmF0ZWRET01BdHRyaWJ1dGUoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdEN1c3RvbUFj
Y2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5i
dWlsdGluTmFtZXMoKS4iIC4gJGF0dHJpYnV0ZU5hbWUgLiAiUHJpdmF0ZU5hbWUoKSwgQ3VzdG9t
R2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICRnZXR0ZXIsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9y
U3RydWN0dXJlKEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSkpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgfQotCi0gICAgIyBTdXBw
b3J0IGZvciBSdW50aW1lRW5hYmxlZCBvcGVyYXRpb25zIG9uIGluc3RhbmNlcy4KLSAgICBmb3Jl
YWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAg
bmV4dCB1bmxlc3MgTmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwgJG9wZXJhdGlvbik7Ci0g
ICAgICAgIG5leHQgdW5sZXNzIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNl
LCAkb3BlcmF0aW9uKTsKLSAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRl
eH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKLQotICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIik7Ci0gICAgICAgIG15ICRydW50aW1l
RW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25h
bFN0cmluZygkaW50ZXJmYWNlLCAkb3BlcmF0aW9uLCAiZ2xvYmFsT2JqZWN0KCkiKTsKLSAgICAg
ICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRvcGVyYXRpb24tPm5hbWU7Ci0gICAgICAgIG15ICRpbXBs
ZW1lbnRhdGlvbkZ1bmN0aW9uID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRvcGVyYXRpb24pOwotICAgICAgICBteSAkZnVuY3Rpb25MZW5ndGggPSBHZXRGdW5jdGlv
bkxlbmd0aCgkb3BlcmF0aW9uKTsKLSAgICAgICAgbXkgJGpzQXR0cmlidXRlcyA9IENvbXB1dGVG
dW5jdGlvblNwZWNpYWwoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7Ci0KLSAgICAgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJp
bmcoJG9wZXJhdGlvbik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmICgke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pXG4i
KTsKLSAgICAgICAgbXkgJHByb3BlcnR5TmFtZSA9ICJzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS4iIC4gJGZ1bmN0aW9uTmFtZSAuICgk
b3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0gPyAiUHJp
dmF0ZU5hbWUoKSIgOiAiUHVibGljTmFtZSgpIik7Ci0gICAgICAgIGlmIChJc0pTQnVpbHRpbigk
aW50ZXJmYWNlLCAkb3BlcmF0aW9uKSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpcywgJHByb3BlcnR5TmFt
ZSwgJGltcGxlbWVudGF0aW9uRnVuY3Rpb24odm0pLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRq
c0F0dHJpYnV0ZXMpKTtcbiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCAk
cHJvcGVydHlOYW1lLCAkZnVuY3Rpb25MZW5ndGgsICRpbXBsZW1lbnRhdGlvbkZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSgkanNBdHRyaWJ1dGVzKSk7XG4iKTsK
LSAgICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwotICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2bS5o
ZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHdyYXBwZWQoKS5tZW1vcnlDb3N0KCkpO1xu
IikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVwb3J0RXh0cmFNZW1vcnlD
b3N0fTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKQEAgLTY0MzQsMzIgKzYy
NzAsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVuCiAgICAgaWYg
KCRudW1Db25zdGFudHMgPiAwKSB7CiAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbigkY29udGVudFJlZiwgJGNsYXNzTmFtZSwgJGludGVyZmFjZU9yQ2FsbGJhY2ssICRuYW1l
KTsKIAotICAgICAgICBteSAkaGFzaFNpemUgPSAwOwotICAgICAgICBteSAkaGFzaE5hbWUgPSAk
Y2xhc3NOYW1lIC4gIkNvbnN0cnVjdG9yVGFibGUiOwotCi0gICAgICAgIG15IEBoYXNoS2V5cyA9
ICgpOwotICAgICAgICBteSBAaGFzaFZhbHVlMSA9ICgpOwotICAgICAgICBteSBAaGFzaFZhbHVl
MiA9ICgpOwotICAgICAgICBteSBAaGFzaFNwZWNpYWxzID0gKCk7Ci0gICAgICAgIG15ICVjb25k
aXRpb25hbHMgPSAoKTsKLSAgICAgICAgbXkgJXJlYWRXcml0ZUNvbmRpdGlvbmFscyA9ICgpOwot
Ci0gICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0YW50IChAeyRjb25zdGFudHN9KSB7Ci0gICAgICAg
ICAgICBteSAkbmFtZSA9ICRjb25zdGFudC0+bmFtZTsKLSAgICAgICAgICAgIHB1c2goQGhhc2hL
ZXlzLCAkbmFtZSk7Ci0gICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkY29uc3RhbnQtPnZh
bHVlKTsKLSAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICIwIik7Ci0gICAgICAgICAgICBw
dXNoKEBoYXNoU3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDb25zdGFudEludGVnZXIiKTsKLQotICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAk
Y29uc3RhbnQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OwotICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxIGlmICRpbXBsZW1lbnRl
ZEJ5OwotCi0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkY29uc3RhbnQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKLSAgICAgICAgICAgICRjb25kaXRpb25hbHN7JG5h
bWV9ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRpb25hbDsKLQotICAgICAgICAgICAgJGhhc2hT
aXplKys7Ci0gICAgICAgIH0KLSAgICAgICAgJG9iamVjdC0+R2VuZXJhdGVIYXNoVGFibGUoJGNs
YXNzTmFtZSwgJGhhc2hOYW1lLCAkaGFzaFNpemUsIFxAaGFzaEtleXMsIFxAaGFzaFNwZWNpYWxz
LCBcQGhhc2hWYWx1ZTEsIFxAaGFzaFZhbHVlMiwgXCVjb25kaXRpb25hbHMsIFwlcmVhZFdyaXRl
Q29uZGl0aW9uYWxzLCAxKSBpZiAkaGFzaFNpemUgPiAwOworICAgICAgICBHZW5lcmF0ZUhhc2hU
YWJsZSgkaW50ZXJmYWNlT3JDYWxsYmFjaywgQ09OVEVYVF9OQU1FX0NPTlNUUlVDVE9SKTsKIAog
ICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29tcGls
ZVRpbWVDaGVja0ZvckVudW1zSWZOZWVkZWQoJGludGVyZmFjZU9yQ2FsbGJhY2spKTsKIApAQCAt
NzIyMSw4ICs3MDMyLDYgQEAgc3ViIEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheQogICAgIG15
ICRwYWNrZWRTaXplID0gc2NhbGFyIEB7JGtleXN9OwogICAgIHB1c2goQGltcGxDb250ZW50LCAi
XG5zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgJG5hbWVFbnRyaWVzXFtcXSA9XG5ce1xuIik7
CiAKLSAgICBteSAkaGFzU2V0dGVyID0gImZhbHNlIjsKLQogICAgIG15ICRpID0gMDsKICAgICBm
b3JlYWNoIG15ICRrZXkgKEB7JGtleXN9KSB7CiAgICAgICAgIG15ICRmaXJzdFRhcmdldFR5cGU7
CkBAIC03MjQ4LDEwICs3MDU3LDEyIEBAIHN1YiBHZW5lcmF0ZUhhc2hUYWJsZVZhbHVlQXJyYXkK
ICAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAiIjsKICAgICAgICAgfSBlbHNpZiAoIkAk
c3BlY2lhbHNbJGldIiA9fiBtL0RPTUpJVEF0dHJpYnV0ZS8pIHsKICAgICAgICAgICAgICRmaXJz
dFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cio+IjsKKyAgICAgICAgfSBlbHNpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL1Byb3BlcnR5Q2Fs
bGJhY2svKSB7CisgICAgICAgICAgICAkZmlyc3RUYXJnZXRUeXBlID0gInN0YXRpY19jYXN0PExh
enlQcm9wZXJ0eUNhbGxiYWNrPiI7CisgICAgICAgICAgICAkc2Vjb25kVGFyZ2V0VHlwZSA9ICJz
dGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4iOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4iOwogICAgICAgICAgICAgJHNlY29uZFRhcmdldFR5cGUgPSAi
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+IjsKLSAgICAgICAgICAg
ICRoYXNTZXR0ZXIgPSAidHJ1ZSI7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCJAJHNwZWNpYWxz
WyRpXSIgPX4gbS9Db25zdGFudEludGVnZXIvKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB7IFwiJGtleVwiLCBAJHNwZWNpYWxzWyRpXSwgTm9JbnRyaW5zaWMsIHsgKGxv
bmcgbG9uZykiIC4gJGZpcnN0VGFyZ2V0VHlwZSAuICIoQCR2YWx1ZTFbJGldKSB9IH0sXG4iKTsK
QEAgLTcyODAsNTEgKzcwOTEsMjcgQEAgc3ViIEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheQog
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAw
IH0gfVxuIikgaWYgKCEkcGFja2VkU2l6ZSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xu
XG4iKTsKLQotICAgIHJldHVybiAkaGFzU2V0dGVyOwogfQogCiBzdWIgR2VuZXJhdGVIYXNoVGFi
bGUKIHsKLSAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjb250
ZXh0TmFtZSkgPSBAXzsKIAotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKLSAgICBteSAkbmFt
ZSA9IHNoaWZ0OwotICAgIG15ICRzaXplID0gc2hpZnQ7Ci0gICAgbXkgJGtleXMgPSBzaGlmdDsK
LSAgICBteSAkc3BlY2lhbHMgPSBzaGlmdDsKLSAgICBteSAkdmFsdWUxID0gc2hpZnQ7Ci0gICAg
bXkgJHZhbHVlMiA9IHNoaWZ0OwotICAgIG15ICRjb25kaXRpb25hbHMgPSBzaGlmdDsKLSAgICBt
eSAkcmVhZFdyaXRlQ29uZGl0aW9uYWxzID0gc2hpZnQ7Ci0gICAgbXkgJGp1c3RHZW5lcmF0ZVZh
bHVlQXJyYXkgPSBzaGlmdDsKKyAgICBteSBAa2V5cyA9ICgpOworICAgIG15IEBzcGVjaWFscyA9
ICgpOworICAgIG15IEB2YWx1ZTEgPSAoKTsKKyAgICBteSBAdmFsdWUyID0gKCk7CisgICAgbXkg
JWNvbmRpdGlvbmFscyA9ICgpOworICAgIG15ICVyZWFkV3JpdGVDb25kaXRpb25hbHMgPSAoKTsK
IAotICAgIG15ICRuYW1lRW50cmllcyA9ICIke25hbWV9VmFsdWVzIjsKLSAgICAkbmFtZUVudHJp
ZXMgPX4gcy86L18vZzsKLSAgICBteSAkbmFtZUluZGV4ID0gIiR7bmFtZX1JbmRleCI7Ci0gICAg
JG5hbWVJbmRleCA9fiBzLzovXy9nOworICAgIG15ICgkc2l6ZSwgJGhhc1NldHRlck9yUmVhZG9u
bHlQcm9wZXJ0aWVzKSA9IEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZSgkaW50ZXJmYWNlLCAk
Y29udGV4dE5hbWUsIFxAa2V5cywgXEBzcGVjaWFscywgXEB2YWx1ZTEsIFxAdmFsdWUyLCBcJWNv
bmRpdGlvbmFscywgXCVyZWFkV3JpdGVDb25kaXRpb25hbHMpOworICAgIHJldHVybiAibnVsbHB0
ciIgaWYgJHNpemUgPT0gMDsKIAotICAgIGlmICgoJG5hbWUgPX4gL1Byb3RvdHlwZS8pIG9yICgk
bmFtZSA9fiAvQ29uc3RydWN0b3IvKSkgewotICAgICAgICBteSAkdHlwZSA9ICRuYW1lOwotICAg
ICAgICBteSAkaW1wbENsYXNzOwotCi0gICAgICAgIGlmICgkbmFtZSA9fiAvUHJvdG90eXBlLykg
ewotICAgICAgICAgICAgJHR5cGUgPX4gcy9Qcm90b3R5cGUuKi8vOwotICAgICAgICAgICAgJGlt
cGxDbGFzcyA9ICR0eXBlOyAkaW1wbENsYXNzID1+IHMvV3JhcHBlciQvLzsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovXG4iKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICR0eXBlID1+IHMvQ29uc3RydWN0b3IuKi8v
OwotICAgICAgICAgICAgJGltcGxDbGFzcyA9ICR0eXBlOyAkaW1wbENsYXNzID1+IHMvQ29uc3Ry
dWN0b3IkLy87Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi8qIEhhc2ggdGFibGUg
Zm9yIGNvbnN0cnVjdG9yICovXG4iKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiLyogSGFzaCB0YWJsZSAqL1xuIik7Ci0gICAgfQorICAgIHB1
c2goQGltcGxDb250ZW50LCAiLyogSGFzaCB0YWJsZSBmb3IgJHtjb250ZXh0TmFtZX0gKi9cbiIp
OwogCi0gICAgaWYgKCRqdXN0R2VuZXJhdGVWYWx1ZUFycmF5KSB7Ci0gICAgICAgIEdlbmVyYXRl
SGFzaFRhYmxlVmFsdWVBcnJheSgka2V5cywgJHNwZWNpYWxzLCAkdmFsdWUxLCAkdmFsdWUyLCAk
Y29uZGl0aW9uYWxzLCAkcmVhZFdyaXRlQ29uZGl0aW9uYWxzLCAkbmFtZUVudHJpZXMpIGlmICRz
aXplOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG15ICRuYW1lID0gJGludGVyZmFjZS0+
Y2xhc3NOYW1lIC4gIiR7Y29udGV4dE5hbWV9VGFibGUiOworICAgIG15ICRuYW1lRW50cmllcyA9
ICIke25hbWV9VmFsdWVzIjsKKyAgICBteSAkbmFtZUluZGV4ID0gIiR7bmFtZX1JbmRleCI7CiAK
ICAgICAjIEdlbmVyYXRlIHNpemUgZGF0YSBmb3IgY29tcGFjdCcgc2l6ZSBoYXNoIHRhYmxlCiAK
QEAgLTczMzgsNyArNzEyNSw3IEBAIHN1YiBHZW5lcmF0ZUhhc2hUYWJsZQogICAgIG15ICRudW1F
bnRyaWVzID0gJGNvbXBhY3RTaXplOwogCiAgICAgbXkgJGkgPSAwOwotICAgIGZvcmVhY2ggKEB7
JGtleXN9KSB7CisgICAgZm9yZWFjaCAoQGtleXMpIHsKICAgICAgICAgbXkgJGRlcHRoID0gMDsK
ICAgICAgICAgbXkgJGggPSBIYXNoZXI6OkdlbmVyYXRlSGFzaFZhbHVlKCRfKSAlICRudW1FbnRy
aWVzOwogCkBAIC03MzcwLDEyICs3MTU3LDUzIEBAIHN1YiBHZW5lcmF0ZUhhc2hUYWJsZQogICAg
IH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOwogCi0gICAgIyBEdW1wIHRoZSBo
YXNoIHRhYmxlCi0gICAgbXkgJGhhc1NldHRlciA9IEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJh
eSgka2V5cywgJHNwZWNpYWxzLCAkdmFsdWUxLCAkdmFsdWUyLCAkY29uZGl0aW9uYWxzLCAkcmVh
ZFdyaXRlQ29uZGl0aW9uYWxzLCAkbmFtZUVudHJpZXMpOwotICAgIG15ICRwYWNrZWRTaXplID0g
c2NhbGFyIEB7JGtleXN9OworICAgIEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheShcQGtleXMs
IFxAc3BlY2lhbHMsIFxAdmFsdWUxLCBcQHZhbHVlMiwgXCVjb25kaXRpb25hbHMsIFwlcmVhZFdy
aXRlQ29uZGl0aW9uYWxzLCAkbmFtZUVudHJpZXMpOwogCisgICAgbXkgJHBhY2tlZFNpemUgPSBz
Y2FsYXIoQGtleXMpOwogICAgIG15ICRjb21wYWN0U2l6ZU1hc2sgPSAkbnVtRW50cmllcyAtIDE7
Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgSGFzaFRhYmxlICRuYW1lID0g
eyAkcGFja2VkU2l6ZSwgJGNvbXBhY3RTaXplTWFzaywgJGhhc1NldHRlciwgJHtjbGFzc05hbWV9
OjppbmZvKCksICRuYW1lRW50cmllcywgJG5hbWVJbmRleCB9O1xuIik7CisgICAgbXkgJGNsYXNz
Rm9yVGhpcyA9ICRjb250ZXh0TmFtZSBlcSBDT05URVhUX05BTUVfQ09OU1RSVUNUT1IgPyAibnVs
bHB0ciIgOiAkaW50ZXJmYWNlLT5jbGFzc05hbWUgLiAiOjppbmZvKCkiOworICAgIHB1c2goQGlt
cGxDb250ZW50LCAic3RhdGljIGNvbnN0IEhhc2hUYWJsZSAkbmFtZSA9IHsgJHBhY2tlZFNpemUs
ICRjb21wYWN0U2l6ZU1hc2ssICRoYXNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcywgJGNsYXNz
Rm9yVGhpcywgJG5hbWVFbnRyaWVzLCAkbmFtZUluZGV4IH07XG4iKTsKKworICAgIHJldHVybiAi
JiR7bmFtZX0iOworfQorCitzdWIgR2VuZXJhdGVQcml2YXRlSWRlbnRpZmllcnMKK3sKKyAgICBt
eSAoJGludGVyZmFjZSwgJGNvbnRleHROYW1lKSA9IEBfOworCisgICAgbXkgJGlzQ29uc3RydWN0
b3IgPSAkY29udGV4dE5hbWUgZXEgQ09OVEVYVF9OQU1FX0NPTlNUUlVDVE9SOworICAgIG15ICRp
c0luc3RhbmNlID0gJGNvbnRleHROYW1lIGVxIENPTlRFWFRfTkFNRV9JTlNUQU5DRTsKKworICAg
IGZvcmVhY2ggbXkgJG9wZXJhdGlvbk9yQXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlv
bnN9LCBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgIG5leHQgaWYgISRvcGVy
YXRpb25PckF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9
OworICAgICAgICBuZXh0IGlmICgkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPmlzU3RhdGljIHx8IDAp
ICE9ICRpc0NvbnN0cnVjdG9yOworICAgICAgICBuZXh0IGlmIFNob3VsZEJlT25JbnN0YW5jZSgk
aW50ZXJmYWNlLCAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUpICE9ICRpc0luc3RhbmNlOworCisgICAg
ICAgIGFzc2VydCgiVXNpbmcgRE9NSklUIHdpdGggcHJpdmF0ZSBpZGVudGlmaWVycyBpcyBub3Qg
eWV0IHN1cHBvcnRlZC4iKSBpZiAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0RPTUpJVH07CisKKyAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJG9wZXJhdGlvbk9y
QXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CisgICAgICAgIGlm
ICgkY29uZGl0aW9uYWwpIHsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRj
b2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVl
KCRjb25kaXRpb25hbCk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoTmVlZHNSdW50
aW1lQ2hlY2soJGludGVyZmFjZSwgJG9wZXJhdGlvbk9yQXR0cmlidXRlKSkgeworICAgICAgICAg
ICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVu
YWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRvcGVyYXRpb25PckF0dHJpYnV0ZSwg
Imdsb2JhbE9iamVjdCgpIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KVxuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAiKTsKKyAgICAgICAgfQorCisgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKKyAgICAgICAgbXkgJHByb3BlcnR5
TmFtZSA9ICJzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS4iIC4gJG9wZXJhdGlvbk9yQXR0cmlidXRlLT5uYW1lIC4gIlByaXZhdGVOYW1l
KCkiOworICAgICAgICBpZiAocmVmKCRvcGVyYXRpb25PckF0dHJpYnV0ZSkgZXEgIklETEF0dHJp
YnV0ZSIpIHsKKyAgICAgICAgICAgIG15ICRqc2NBdHRyaWJ1dGUgPSAkY29kZUdlbmVyYXRvci0+
SXNDb25zdHJ1Y3RvclR5cGUoJG9wZXJhdGlvbk9yQXR0cmlidXRlLT50eXBlKSA/ICJKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSIgOiAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IiOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0
RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sICR7cHJvcGVydHlOYW1lfSwgIiAuIEdldEF0dHJpYnV0
ZUpTVmFsdWUoJGludGVyZmFjZSwgJG9wZXJhdGlvbk9yQXR0cmlidXRlKSAuICIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigke2pzY0F0dHJpYnV0ZX0pKTtcbiIpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZtLCAke3Byb3Bl
cnR5TmFtZX0sICIgLiBHZXRPcGVyYXRpb25KU1ZhbHVlKCRpbnRlcmZhY2UsICRvcGVyYXRpb25P
ckF0dHJpYnV0ZSwgInRoaXMtPmdsb2JhbE9iamVjdCgpIikgLiAiKTtcbiIpOworICAgICAgICB9
CisKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25h
bDsKKyAgICB9CiB9CiAKIHN1YiBTdWJzdGl0dXRlSGVhZGVyCkBAIC03NTM2LDcgKzczNjQsNyBA
QCBzdWIgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIlxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYpO1xuIik7CiAKLSAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6SGFzU3RhdGlj
UHJvcGVydHlUYWJsZSJ9ID0gMSBpZiBQcm90b3R5cGVIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKCRp
bnRlcmZhY2UpICYmIElzR2xvYmFsSW50ZXJmYWNlKCRpbnRlcmZhY2UpOworICAgICRzdHJ1Y3R1
cmVGbGFnc3siSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIn0gPSAxIGlmIFByb3RvdHlwZUhh
c1Byb3BlcnRpZXMoJGludGVyZmFjZSk7CiAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OklzSW1t
dXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0In0gPSAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0lzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0T25Qcm90b3R5cGV9
OwogCiAgICAgIyBzdHJ1Y3R1cmUgZmxhZ3MKQEAgLTc2ODgsNjMgKzc1MTYsNiBAQCBzdWIgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICB9CiB9CiAKLXN1YiBDb25zdHJ1Y3Rvckhh
c1Byb3BlcnRpZXMKLXsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0KLSAgICBmb3JlYWNo
IG15ICRjb25zdGFudCAoQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KSB7Ci0gICAgICAgIHJldHVy
biAxOwotICAgIH0KLQotICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5h
dHRyaWJ1dGVzfSkgewotICAgICAgICBuZXh0IHVubGVzcyAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMp
OwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24g
KEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAgbmV4dCB1bmxlc3MgKCRvcGVy
YXRpb24tPmlzU3RhdGljKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgcmV0dXJu
IDA7Ci19Ci0KLXN1YiBHZXRSdW50aW1lRW5hYmxlZFN0YXRpY1Byb3BlcnRpZXMKLXsKLSAgICBt
eSAoJGludGVyZmFjZSkgPSBAXzsKLQotICAgIG15IEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMg
PSAoKTsKLQotICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1
dGVzfSkgewotICAgICAgICBuZXh0IGlmIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZSgkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKSAhPSAwOwotICAgICAgICBuZXh0IGlmIG5vdCAkYXR0cmlidXRl
LT5pc1N0YXRpYzsKLQotICAgICAgICBpZiAoTmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgIHB1c2goQHJ1bnRpbWVFbmFibGVkUHJvcGVydGll
cywgJGF0dHJpYnV0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3JlYWNoIG15ICRjb25z
dGFudCAoQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KSB7Ci0gICAgICAgIGlmIChOZWVkc1J1bnRp
bWVDaGVjaygkaW50ZXJmYWNlLCAkY29uc3RhbnQpKSB7Ci0gICAgICAgICAgICBwdXNoKEBydW50
aW1lRW5hYmxlZFByb3BlcnRpZXMsICRjb25zdGFudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAg
ICAgICAgbmV4dCBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlk
ZW50aWZpZXJ9IGFuZCBub3QgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGlj
SWRlbnRpZmllcn0pOwotICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4
fSAmJiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwotICAgICAgICBuZXh0IGlmIE9w
ZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSAhPSAwOwot
ICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPm5hbWUgZXEgIltTeW1ib2wuSXRlcmF0b3JdIjsK
LSAgICAgICAgbmV4dCBpZiBub3QgJG9wZXJhdGlvbi0+aXNTdGF0aWM7Ci0KLSAgICAgICAgaWYg
KE5lZWRzUnVudGltZUNoZWNrKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pKSB7Ci0gICAgICAgICAg
ICBwdXNoKEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMsICRvcGVyYXRpb24pOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXM7Ci19Ci0KIHN1
YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogewogICAgIG15ICgkb3V0cHV0QXJy
YXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAk
aW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbikgPSBAXzsKQEAgLTc3
NjEsNyArNzUzMiwxOCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAg
ICAgICAgJGxlYXN0Q29uc3RydWN0b3JMZW5ndGggPSAwOwogICAgIH0KIAotICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgInRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvICR7Y29uc3RydWN0b3JDbGFz
c05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2NvbnN0cnVjdG9y
Q2xhc3NOYW1lfSkgfTtcblxuIik7CisgICAgbXkgJGNvbnN0cnVjdG9ySGFzaFRhYmxlID0gIm51
bGxwdHIiOworICAgIHVubGVzcyAoJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24pIHsK
KyAgICAgICAgbXkgJHN0cnVjdHVyZUZsYWdzID0gIkJhc2U6OlN0cnVjdHVyZUZsYWdzIjsKKyAg
ICAgICAgaWYgKENvbnN0cnVjdG9ySGFzUHJvcGVydGllcygkaW50ZXJmYWNlKSkgeworICAgICAg
ICAgICAgJGNvbnN0cnVjdG9ySGFzaFRhYmxlID0gIiYke2NsYXNzTmFtZX1Db25zdHJ1Y3RvclRh
YmxlIjsKKyAgICAgICAgICAgICRzdHJ1Y3R1cmVGbGFncyAuPSAiIHwgSlNDOjpIYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlIjsKKyAgICAgICAgfQorCisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
InRlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OlN0cnVj
dHVyZUZsYWdzID0gJHtzdHJ1Y3R1cmVGbGFnc307XG4iKTsKKyAgICB9CisKKyAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xh
c3NOYW1lfTo6c19pbmZvID0geyBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIsICZCYXNlOjpz
X2luZm8sICR7Y29uc3RydWN0b3JIYXNoVGFibGV9LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKCR7Y29uc3RydWN0b3JDbGFzc05hbWV9KSB9O1xuXG4iKTsKIAogICAgICMgSWYgdGhlIGlu
dGVyZmFjZSBoYXMgYSBwYXJlbnQgaW50ZXJmYWNlIHdoaWNoIGRvZXMgbm90IGhhdmUgW0xlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0XSwgdGhlbiB1c2UgaXRzIGludGVyZmFjZSBvYmplY3QgYXMgcHJv
dG90eXBlLAogICAgICMgb3RoZXJ3aXNlIHVzZSBGdW5jdGlvblByb3RvdHlwZTogaHR0cDovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNpbnRlcmZhY2Utb2JqZWN0CkBAIC03Nzk2LDYgKzc1Nzgs
NyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICB9IGVsc2lmICgk
aW50ZXJmYWNlLT5pc0NhbGxiYWNrKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgIH0gZWxzaWYgKCRpbnRlcmZh
Y2UtPmlzTmFtZXNwYWNlT2JqZWN0KSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7XG4iKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsICR7Y2xhc3NOYW1lfTo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7XG4iKTsKQEAgLTc4MTQsMjYgKzc1OTcsMTAgQEAgc3ViIEdlbmVyYXRlQ29u
c3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoJHtsZWFzdENv
bnN0cnVjdG9yTGVuZ3RofSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CiAgICAgfQogCi0gICAgbXkgJGNs
YXNzRm9yVGhpcyA9ICIke2NsYXNzTmFtZX06OmluZm8oKSI7Ci0gICAgaWYgKCRpbnRlcmZhY2Ut
PmlzQ2FsbGJhY2spIHsKLSAgICAgICAgJGNsYXNzRm9yVGhpcyA9ICJudWxscHRyIjsKLSAgICB9
Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwg
JHtjbGFzc0ZvclRoaXN9LCAke2NsYXNzTmFtZX1Db25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhp
cyk7XG4iKSBpZiBDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMoJGludGVyZmFjZSk7CisgICAgR2Vu
ZXJhdGVQcml2YXRlSWRlbnRpZmllcnMoJGludGVyZmFjZSwgQ09OVEVYVF9OQU1FX0NPTlNUUlVD
VE9SKTsKIAotICAgIG15IEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMgPSBHZXRSdW50aW1lRW5h
YmxlZFN0YXRpY1Byb3BlcnRpZXMoJGludGVyZmFjZSk7Ci0KLSAgICBmb3JlYWNoIG15ICRvcGVy
YXRpb25PckF0dHJpYnV0ZSAoQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcykgewotICAgICAgICBt
eSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25h
bFN0cmluZygkb3BlcmF0aW9uT3JBdHRyaWJ1dGUpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
LSAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRvcGVyYXRpb25PckF0dHJp
YnV0ZSwgIiZnbG9iYWxPYmplY3QiKTsKLSAgICAgICAgbXkgJG5hbWUgPSAkb3BlcmF0aW9uT3JB
dHRyaWJ1dGUtPm5hbWU7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7
cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7Ci0gICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3Ry
bGVuKFwiJG5hbWVcIikpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKLSAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Jmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgfVxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNl
bmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgIGlmICgkY29uc3RydWN0b3JIYXNo
VGFibGUgbmUgIm51bGxwdHIiKSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBy
ZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIG51bGxwdHIsICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9y
VGFibGVWYWx1ZXMsICp0aGlzKTtcbiIpOwogICAgIH0KIAogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIn1cblxuIik7CkBAIC03OTI1LDYgKzc2OTIsMTIgQEAgc3ViIENvbXB1dGVGdW5jdGlvblNw
ZWNpYWwKICAgICBteSBAc3BlY2lhbHMgPSAoKTsKICAgICBwdXNoKEBzcGVjaWFscywgKCJKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIiwgIkpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IikpIGlmIElzTGVnYWN5VW5mb3JnZWFibGUoJGludGVyZmFjZSwgJG9wZXJhdGlv
bik7CiAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSIpIGlmICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vdEVudW1lcmFibGV9Owor
CisgICAgaWYgKE5lZWRzUnVudGltZUNoZWNrKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pKSB7Cisg
ICAgICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlD
YWxsYmFjayIpOworICAgICAgICByZXR1cm4gXEBzcGVjaWFsczsKKyAgICB9CisKICAgICBpZiAo
SXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJG9wZXJhdGlvbikpIHsKICAgICAgICAgcHVzaChAc3Bl
Y2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluIik7CiAgICAgfSBlbHNlIHsK
QEAgLTc5MzMsNyArNzcwNiw3IEBAIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCiAgICAgaWYg
KCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKICAgICAgICAgcHVz
aChAc3BlY2lhbHMsICJKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRGdW5jdGlvbiIpIGlm
ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07CiAgICAgfQotICAgIHJl
dHVybiAic3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCIgLiAoKEBzcGVjaWFscyA+IDApID8gam9pbigi
IHwgIiwgQHNwZWNpYWxzKSA6ICIwIikgLiAiKSI7CisgICAgcmV0dXJuIFxAc3BlY2lhbHM7CiB9
CiAKIHN1YiBJc0pTQnVpbHRpbgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwJKHJl
dmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9E
T01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBw
YXJ0aWFsIGludGVyZmFjZSBET01XaW5kb3cgewogICAgIGF0dHJpYnV0ZSBUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOwogICAg
IGF0dHJpYnV0ZSBUZXN0RGVmYXVsdFRvSlNPTkNvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9KU09O
OwogICAgIGF0dHJpYnV0ZSBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3Ry
dWN0b3IgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDsKLSAgICBhdHRyaWJ1dGUg
VGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvciBUZXN0RW5hYmxlZEJ5U2V0dGluZzsKKyAg
ICBbUHJpdmF0ZUlkZW50aWZpZXIsIFB1YmxpY0lkZW50aWZpZXJdIGF0dHJpYnV0ZSBUZXN0RW5h
YmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yIFRlc3RFbmFibGVkQnlTZXR0aW5nOwogICAgIFtFbmFi
bGVkRm9yQ29udGV4dCwgU2VjdXJlQ29udGV4dF0gYXR0cmlidXRlIFRlc3RFbmFibGVkRm9yQ29u
dGV4dENvbnN0cnVjdG9yIFRlc3RFbmFibGVkRm9yQ29udGV4dDsKICAgICBbQ29uZGl0aW9uYWw9
Q29uZGl0aW9uMXxDb25kaXRpb24yXSBhdHRyaWJ1dGUgVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
IFRlc3RJbnRlcmZhY2U7CiAgICAgYXR0cmlidXRlIFRlc3ROb2RlQ29uc3RydWN0b3IgVGVzdE5v
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVuYWJs
ZWRCeVNldHRpbmcuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0RW5hYmxlZEJ5U2V0dGluZy5pZGwJKHJldmlzaW9uIDI3OTUwMykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RW5hYmxlZEJ5U2V0dGlu
Zy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAKICAqLwogCiBbCisgICAgUHJp
dmF0ZUlkZW50aWZpZXIsCisgICAgUHVibGljSWRlbnRpZmllciwKICAgICBFeHBvc2VkPVdpbmRv
dwogXSBpbnRlcmZhY2UgVGVzdEVuYWJsZWRCeVNldHRpbmcgewogICAgIFtFbmFibGVkQnlTZXR0
aW5nPVRlc3RTZXR0aW5nXSBhdHRyaWJ1dGUgVGVzdFN1Yk9iakNvbnN0cnVjdG9yIFRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xODAsNiArMTgwLDEwIEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1s
b3cKICAgICBbQ29uZGl0aW9uYWw9Q29uZGl0aW9uNCwgSlNCdWlsdGluXSByZWFkb25seSBhdHRy
aWJ1dGUgVGVzdE9iaiBqc0J1aWx0aW5SZWFkT25seUF0dHJpYnV0ZTsKIAogICAgIC8vIFByaXZh
dGUgZXh0ZW5kZWQgYXR0cmlidXRlCisgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5h
YmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZSwgUHJpdmF0ZUlkZW50aWZpZXJdIGF0dHJpYnV0ZSBs
b25nIGVuYWJsZWRBdFJ1bnRpbWVQcml2YXRlQXR0cjsKKyAgICBbQ29uZGl0aW9uYWw9VEVTVF9G
RUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlLCBQcml2YXRlSWRlbnRpZmllcl0g
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBlbmFibGVkQXRSdW50aW1lUHJpdmF0ZVJlYWRP
bmx5QXR0cjsKKyAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1l
PVRlc3RGZWF0dXJlLCBQcml2YXRlSWRlbnRpZmllcl0gc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0
ZSBUZXN0T2JqIGVuYWJsZWRBdFJ1bnRpbWVQcml2YXRlU3RhdGljUmVhZE9ubHlBdHRyOworICAg
IFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmUs
IFByaXZhdGVJZGVudGlmaWVyXSBzdGF0aWMgYm9vbGVhbiBlbmFibGVkQXRSdW50aW1lUHJpdmF0
ZVN0YXRpY01ldGhvZChsb25nIGxvbmdBcmcpOwogICAgIFtQcml2YXRlSWRlbnRpZmllcl0gRE9N
U3RyaW5nIHByaXZhdGVNZXRob2QoRE9NU3RyaW5nIGFyZ3VtZW50KTsKICAgICBbUHJpdmF0ZUlk
ZW50aWZpZXIsIFB1YmxpY0lkZW50aWZpZXJdIERPTVN0cmluZyBwdWJsaWNBbmRQcml2YXRlTWV0
aG9kKERPTVN0cmluZyBhcmd1bWVudCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkocmV2aXNpb24g
Mjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9N
V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsOSArODAsNTggQEAgc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaQogCiB1c2luZyBKU0RPTVdpbmRvd0RPTUNvbnN0
cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNET01XaW5kb3c+Owog
Ci0vKiBIYXNoIHRhYmxlICovCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTRE9NV2luZG93
RE9NQ29uc3RydWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Cit0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJET01XaW5kb3ciLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3IpIH07CisKK3RlbXBsYXRl
PD4gSlNWYWx1ZSBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7
CisgICAgcmV0dXJuIEpTRXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2Jq
ZWN0KTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xv
YmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkRPTVdpbmRvdyJfcyksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAq
LwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNET01XaW5kb3dUYWJs
ZUluZGV4WzM3XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RP
TVdpbmRvd1Byb3RvdHlwZVRhYmxlSW5kZXhbMl0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDAsIC0xIH0sCit9OworCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RPTVdpbmRv
d1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0RPTVdpbmRvd0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorfTsKKworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSBKU0RPTVdpbmRvd1Byb3RvdHlwZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU0RPTVdpbmRv
dzo6aW5mbygpLCBKU0RPTVdpbmRvd1Byb3RvdHlwZVRhYmxlVmFsdWVzLCBKU0RPTVdpbmRvd1By
b3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd1Byb3RvdHlw
ZTo6c19pbmZvID0geyAiRE9NV2luZG93IiwgJkJhc2U6OnNfaW5mbywgJkpTRE9NV2luZG93UHJv
dG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dQcm90
b3R5cGUpIH07CisKK3ZvaWQgSlNET01XaW5kb3dQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQ
cm9wZXJ0aWVzKHZtLCBKU0RPTVdpbmRvdzo6aW5mbygpLCBKU0RPTVdpbmRvd1Byb3RvdHlwZVRh
YmxlVmFsdWVzLCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lU
SU9OKCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTRE9NV2luZG93SW5zdGFuY2VfVGVz
dEVuYWJsZWRGb3JDb250ZXh0KFZNJiB2bSwgSlNPYmplY3QqKQoreworICAgIHJldHVybiBDdXN0
b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNET01XaW5kb3dfVGVzdEVuYWJsZWRGb3JDb250
ZXh0Q29uc3RydWN0b3IsIG51bGxwdHIpOworfQorCitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU0RP
TVdpbmRvd0luc3RhbmNlX1Rlc3RFbmFibGVkRm9yQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVy
biAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBUZXN0RW5hYmxlZEZvckNvbnRleHQ6
OmVuYWJsZWRGb3JDb250ZXh0KCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKTsKK30KKworLyogSGFzaCB0YWJsZSBmb3Ig
SW5zdGFuY2UgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9N
V2luZG93SW5zdGFuY2VUYWJsZUluZGV4WzM3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
NSwgMzUgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMTA3LDggKzE1Niw4IEBAIHN0YXRpYyBjb25z
dCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgOSwgLTEgfSwK
KyAgICB7IDcsIC0xIH0sCisgICAgeyAxMCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTExNyw3MCArMTY2LDM0IEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
MywgMzQgfSwKICAgICB7IDYsIDM2IH0sCi0gICAgeyA3LCAtMSB9LAogICAgIHsgOCwgLTEgfSwK
LSAgICB7IDEwLCAtMSB9LAorICAgIHsgOSwgLTEgfSwKKyAgICB7IDExLCAtMSB9LAogfTsKIAog
Ci1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNET01XaW5kb3dUYWJsZVZhbHVlc1tdID0K
K3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RPTVdpbmRvd0luc3RhbmNlVGFibGVWYWx1
ZXNbXSA9CiB7Ci0gICAgeyAiRE9NV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19ET01XaW5k
b3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3ciLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzRE9NV2luZG93X0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAotICAgIHsgIlRlc3RDb25kaXRpb25hbEluY2x1ZGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRv
d19UZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19UZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3REZWZhdWx0VG9KU09O
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0RPTVdpbmRvd19UZXN0RGVmYXVsdFRvSlNPTkNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAotICAgIHsgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
RE9NV2luZG93X1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKLSAgICB7ICJUZXN0RW5hYmxlZEJ5U2V0dGluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3df
VGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJET01XaW5kb3ci
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzRE9NV2luZG93X0RPTVdpbmRvd0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAor
ICAgIHsgIkV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93X1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93X1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdERlZmF1bHRUb0pTT04iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzRE9NV2luZG93X1Rlc3REZWZhdWx0VG9KU09OQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9
IH0sCisgICAgeyAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNET01XaW5kb3dfVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
bnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3RFbmFibGVkQnlTZXR0aW5nIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RP
TVdpbmRvd19UZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAg
IHsgIlRlc3RFbmFibGVkRm9yQ29udGV4dCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjaywgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVK
U0RPTVdpbmRvd0luc3RhbmNlX1Rlc3RFbmFibGVkRm9yQ29udGV4dCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTRE9NV2lu
ZG93SW5zdGFuY2VfVGVzdEVuYWJsZWRGb3JDb250ZXh0KSB9IH0sCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotICAgIHsgIlRlc3RJbnRlcmZhY2UiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzRE9NV2luZG93X1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJU
ZXN0SW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19UZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihudWxscHRyKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9
IH0sCiAjZW5kaWYKLSAgICB7ICJUZXN0Tm9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfVGVzdE5v
ZGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0T2JqZWN0Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdp
bmRvd19UZXN0T2JqZWN0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAotfTsKLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU0RPTVdp
bmRvd1RhYmxlID0geyAxMSwgMzEsIHRydWUsIEpTRE9NV2luZG93OjppbmZvKCksIEpTRE9NV2lu
ZG93VGFibGVWYWx1ZXMsIEpTRE9NV2luZG93VGFibGVJbmRleCB9OwotdGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNET01XaW5kb3dET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRE9NV2lu
ZG93IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yKSB9OwotCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNE
T01XaW5kb3dET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBK
U0V2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7Ci19Ci0KLXRl
bXBsYXRlPD4gdm9pZCBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJET01XaW5kb3ciX3MpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwotfQotCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNv
bnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9NV2luZG93UHJvdG90eXBlVGFibGVJbmRl
eFsyXSA9IHsKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgLTEgfSwKLX07Ci0KLQotc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTRE9NV2luZG93UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93Q29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCisgICAgeyAiVGVzdE5vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93X1Rlc3ROb2RlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdE9iamVjdCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01X
aW5kb3dfVGVzdE9iamVjdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93X1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNo
VGFibGUgSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNET01XaW5k
b3c6OmluZm8oKSwgSlNET01XaW5kb3dQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNET01XaW5kb3dQ
cm90b3R5cGVUYWJsZUluZGV4IH07Ci1jb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIkRPTVdpbmRvdyIsICZCYXNlOjpzX2luZm8sICZKU0RPTVdpbmRvd1By
b3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93UHJv
dG90eXBlKSB9OwotCi12b2lkIEpTRE9NV2luZG93UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGlj
UHJvcGVydGllcyh2bSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dQcm90b3R5cGVU
YWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJ
VElPTigpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3c6OnNfaW5mbyA9IHsgIkRP
TVdpbmRvdyIsICZCYXNlOjpzX2luZm8sICZKU0RPTVdpbmRvd1RhYmxlLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93KSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBK
U0RPTVdpbmRvd0luc3RhbmNlVGFibGUgPSB7IDEyLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6Omlu
Zm8oKSwgSlNET01XaW5kb3dJbnN0YW5jZVRhYmxlVmFsdWVzLCBKU0RPTVdpbmRvd0luc3RhbmNl
VGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93OjpzX2luZm8gPSB7ICJE
T01XaW5kb3ciLCAmQmFzZTo6c19pbmZvLCAmSlNET01XaW5kb3dJbnN0YW5jZVRhYmxlLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93KSB9OwogCiBKU0RPTVdpbmRvdzo6
SlNET01XaW5kb3coVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPERPTVdpbmRvdz4m
JiBpbXBsLCBKU1dpbmRvd1Byb3h5KiBwcm94eSkKICAgICA6IEpTRXZlbnRUYXJnZXQodm0sIHN0
cnVjdHVyZSwgV1RGTW92ZShpbXBsKSwgcHJveHkpCkBAIC0xOTMsOCArMjA2LDcgQEAgdm9pZCBK
U0RPTVdpbmRvdzo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLAogCiAgICAgc3RhdGljX2Fzc2VydCgh
c3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgRE9NV2luZG93Pjo6dmFsdWUsICJJbnRl
cmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBs
ZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKIAotICAgIGlm
ICgoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFRlc3RFbmFibGVkRm9yQ29udGV4
dDo6ZW5hYmxlZEZvckNvbnRleHQoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCi0gICAgICAgIHB1dERpcmVjdEN1
c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpLT5idWlsdGluTmFtZXMoKS5UZXN0RW5hYmxlZEZvckNvbnRleHRQdWJsaWNOYW1lKCksIEN1
c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc0RPTVdpbmRvd19UZXN0RW5hYmxlZEZvckNv
bnRleHRDb25zdHJ1Y3RvciwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSkpOworICAg
IHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5UZXN0RW5hYmxlZEJ5U2V0dGluZ1ByaXZh
dGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc0RPTVdpbmRvd19UZXN0
RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yLCBudWxscHRyKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSk7CiB9CiAKIEpTVmFsdWUg
SlNET01XaW5kb3c6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTksNiArOTksOCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3Rh
dGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU0RPTVdpbmRvd1Byb3RvdHlwZSwgSlNET01XaW5kb3dQcm90b3R5cGU6OkJhc2UpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZp
c2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDIw
ICs1Myw3IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRGVkaWMKIAogdXNp
bmcgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT47CiAK
LS8qIEhhc2ggdGFibGUgKi8KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4WzJdID0gewotICAgIHsgLTEs
IC0xIH0sCi0gICAgeyAwLCAtMSB9LAotfTsKLQotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsg
IkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi19
OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVU
YWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygp
LCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4IH07Cit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1
Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtODEsNyArNjgsNyBAQCB0ZW1w
bGF0ZTw+IHZvaWQgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTCiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAot
LyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5
cGUgKi8KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGVUYWJsZUluZGV4WzJdID0gewogICAgIHsgLTEsIC0x
IH0sCkBAIC0xMDQsNyArOTEsMjEgQEAgdm9pZCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
UHJvdG90eQogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQog
Ci1jb25zdCBDbGFzc0luZm8gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6c19pbmZvID0g
eyAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCAmSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpIH07CisvKiBIYXNoIHRhYmxlIGZvciBJbnN0YW5j
ZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZUluc3RhbmNlVGFibGVJbmRleFsyXSA9IHsKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgMCwgLTEgfSwKK307CisKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVJbnN0YW5jZVRhYmxlVmFsdWVzW10gPQoreworICAg
IHsgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRy
KSB9IH0sCit9OworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVJbnN0YW5jZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlOjppbmZvKCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVJbnN0YW5jZVRh
YmxlVmFsdWVzLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlSW5zdGFuY2VUYWJsZUluZGV4
IH07Citjb25zdCBDbGFzc0luZm8gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6c19pbmZv
ID0geyAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCAmSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUluc3RhbmNlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSkgfTsKIAogSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZTo6SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+JiYgaW1w
bCkKICAgICA6IEpTV29ya2VyR2xvYmFsU2NvcGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBs
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2
aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiAr
OTYsOCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
IH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlUHJvdG90eXBlLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90
eXBlOjpCYXNlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3cuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjYsNiArMTI2LDggQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1By
b3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGUsIEpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93UHJvdG90eXBlOjpCYXNlKTsKIApAQCAtMTQ4LDYgKzE1MCw3IEBAIHRlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF8KIH0KIEpTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9O
KEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CiAKK3RlbXBs
YXRlPD4gY29uc3QgdW5zaWduZWQgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dET01Db25zdHJ1
Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNFeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3dET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTE2Myw3
ICsxNjYsMTUgQEAgdGVtcGxhdGU8PiB2b2lkIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZAogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0
YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZVRhYmxlSW5kZXhbNF0gPSB7
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDEsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0V4cG9zZWRU
b1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewpAQCAtMTcxLDcgKzE4
Miw4IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0V4cG9zZWRUb1cKICAgICB7ICJk
b1NvbWV0aGluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGVGdW5jdGlvbl9k
b1NvbWV0aGluZyksIChpbnRwdHJfdCkgKDApIH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBK
U0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZTo6c19pbmZvID0geyAiRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZSkgfTsKK3N0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGVU
YWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OmluZm8oKSwg
SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8g
SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkV4cG9zZWRU
b1dvcmtlckFuZFdpbmRvdyIsICZCYXNlOjpzX2luZm8sICZKU0V4cG9zZWRUb1dvcmtlckFuZFdp
bmRvd1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlKSB9OwogCiB2b2lkIEpTRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDIwICs1Myw3IEBAIHN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUGFpbnQKIAogdXNpbmcgSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT47CiAKLS8qIEhhc2ggdGFibGUgKi8KLQotc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGVUYWJsZUluZGV4WzJdID0gewotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAwLCAtMSB9LAotfTsK
LQotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCi19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTo6aW5mbygpLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4IH07Cit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2ln
bmVkIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcikg
fTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtODEsNyArNjgsNyBAQCB0ZW1wbGF0ZTw+IHZv
aWQgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0
YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KIAog
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVQcm90b3R5cGVUYWJsZUluZGV4WzJdID0gewogICAgIHsgLTEsIC0xIH0sCkBAIC0xMDQs
NyArOTEsMjEgQEAgdm9pZCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlOgogICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCi1jb25zdCBDbGFz
c0luZm8gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6c19pbmZvID0geyAiUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCAmSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRh
YmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpIH07CisvKiBIYXNoIHRhYmxlIGZvciBJbnN0YW5jZSAqLworCitzdGF0aWMgY29uc3Qgc3Ry
dWN0IENvbXBhY3RIYXNoSW5kZXggSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUluc3RhbmNlVGFi
bGVJbmRleFsyXSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKK307CisKKwor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVJbnN0
YW5jZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCit9OworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVJbnN0YW5jZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlOjppbmZvKCksIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVJ
bnN0YW5jZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlSW5zdGFuY2VUYWJs
ZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6c19p
bmZvID0geyAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCAmSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUluc3RhbmNlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSkgfTsKIAogSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCkKICAgICA6IEpTV29y
a2xldEdsb2JhbFNjb3BlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI3OTUwMykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDggQEAgcHJpdmF0ZToKICAgICB9
CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZTo6QmFzZSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsMjAgKzUzLDcgQEAgc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNTZXJ2aQogCiB1c2luZyBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+OwogCi0vKiBIYXNoIHRhYmxlICovCi0KLXN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlSW5kZXhbMl0gPSB7Ci0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDAsIC0xIH0sCi19
OwotCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCi19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOjppbmZvKCksIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1
ZXMsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9OwordGVtcGxhdGU8PiBj
b25zdCB1bnNpZ25lZCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZURP
TUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtODEsNyArNjgsNyBA
QCB0ZW1wbGF0ZTw+IHZvaWQgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvCiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
IH0KIAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQ
cm90b3R5cGUgKi8KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRleFsyXSA9IHsKICAgICB7IC0x
LCAtMSB9LApAQCAtMTA0LDcgKzkxLDIxIEBAIHZvaWQgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVQcm90b3R5cGUKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsK
IH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpzX2luZm8g
PSB7ICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCAmSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgfTsKKy8qIEhhc2ggdGFibGUgZm9yIEluc3RhbmNlICov
CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUluc3RhbmNlVGFibGVJbmRleFsyXSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMCwgLTEgfSwKK307CisKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlSW5zdGFuY2VUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
X1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorfTsKKwor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUluc3RhbmNl
VGFibGUgPSB7IDEsIDEsIHRydWUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCks
IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlSW5zdGFuY2VUYWJsZVZhbHVlcywgSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVJbnN0YW5jZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6c19pbmZvID0geyAiU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgJkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlSW5zdGFu
Y2VUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSkgfTsKIAogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OkpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjxTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU+JiYgaW1wbCkKICAgICA6IEpTV29ya2VyR2xvYmFsU2NvcGUodm0sIHN0
cnVjdHVyZSwgV1RGTW92ZShpbXBsKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBj
b3B5KQpAQCAtOTYsNiArOTYsOCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGlj
UHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVQcm90b3R5cGU6OkJhc2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJ
KHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwxMSArMTA0
LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZN
Jik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwog
fTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25z
UHJvdG90eXBlLCBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpT
VGVzdENFUmVhY3Rpb25zRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZTxKU1Rlc3RDRVJlYWN0aW9ucz47CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQg
SlNUZXN0Q0VSZWFjdGlvbnNET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENFUmVhY3Rp
b25zRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDRVJlYWN0aW9ucyIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q0VSZWFj
dGlvbnNET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENFUmVh
Y3Rpb25zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEyNCwyMiArMTI3LDYw
IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDRVJlYWN0aW9uc0RPTUNvbnMKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogfQogCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9y
IFByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNU
ZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVUYWJsZUluZGV4WzMzXSA9IHsKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAyLCAtMSB9LAorICAgIHsgNSwgLTEgfSwKKyAgICB7IDEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgOCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAzLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDQsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMCwgMzIgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNywgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgNiwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
Ci0gICAgeyAiYXR0cmlidXRlV2l0aENFUmVhY3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc19hdHRyaWJ1
dGVXaXRoQ0VSZWFjdGlvbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDRVJlYWN0aW9uc19hdHRyaWJ1dGVXaXRoQ0VSZWFj
dGlvbnMpIH0gfSwKLSAgICB7ICJyZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rpb25zIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RD
RVJlYWN0aW9uc19yZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rpb25zKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q0VSZWFj
dGlvbnNfcmVmbGVjdEF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucykgfSB9LAotICAgIHsgInN0cmlu
Z2lmaWVyQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc19zdHJpbmdpZmllckF0dHJpYnV0ZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdENFUmVhY3Rpb25zX3N0cmluZ2lmaWVyQXR0cmlidXRlKSB9IH0sCi0gICAgeyAiYXR0cmli
dXRlV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc19hdHRyaWJ1dGVXaXRo
Q0VSZWFjdGlvbnNOb3ROZWVkZWQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDRVJlYWN0aW9uc19hdHRyaWJ1dGVXaXRoQ0VS
ZWFjdGlvbnNOb3ROZWVkZWQpIH0gfSwKLSAgICB7ICJyZWZsZWN0QXR0cmlidXRlV2l0aENFUmVh
Y3Rpb25zTm90TmVlZGVkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc19yZWZsZWN0QXR0cmlidXRlV2l0aENFUmVh
Y3Rpb25zTm90TmVlZGVkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q0VSZWFjdGlvbnNfcmVmbGVjdEF0dHJpYnV0ZVdpdGhD
RVJlYWN0aW9uc05vdE5lZWRlZCkgfSB9LAotICAgIHsgInN0cmluZ2lmaWVyQXR0cmlidXRlTm90
TmVlZGVkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RDRVJlYWN0aW9uc19zdHJpbmdpZmllckF0dHJpYnV0ZU5vdE5lZWRlZCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdENFUmVhY3Rpb25zX3N0cmluZ2lmaWVyQXR0cmlidXRlTm90TmVlZGVkKSB9IH0sCisgICAg
eyAiYXR0cmlidXRlV2l0aENFUmVhY3Rpb25zIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0Q0VSZWFjdGlvbnNfYXR0cmlidXRlV2l0aENFUmVhY3Rpb25zKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q0VS
ZWFjdGlvbnNfYXR0cmlidXRlV2l0aENFUmVhY3Rpb25zKSB9IH0sCisgICAgeyAicmVmbGVjdEF0
dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucyIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdENFUmVhY3Rpb25zX3JlZmxlY3RBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RD
RVJlYWN0aW9uc19yZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rpb25zKSB9IH0sCisgICAgeyAi
c3RyaW5naWZpZXJBdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RDRVJlYWN0aW9uc19zdHJpbmdpZmllckF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENFUmVhY3Rpb25zX3N0
cmluZ2lmaWVyQXR0cmlidXRlKSB9IH0sCisgICAgeyAiYXR0cmlidXRlV2l0aENFUmVhY3Rpb25z
Tm90TmVlZGVkIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q0VSZWFjdGlv
bnNfYXR0cmlidXRlV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q0VSZWFjdGlvbnNf
YXR0cmlidXRlV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkKSB9IH0sCisgICAgeyAicmVmbGVjdEF0
dHJpYnV0ZVdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdENFUmVhY3Rpb25zX3JlZmxlY3RBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnNO
b3ROZWVkZWQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RDRVJlYWN0aW9uc19yZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rp
b25zTm90TmVlZGVkKSB9IH0sCisgICAgeyAic3RyaW5naWZpZXJBdHRyaWJ1dGVOb3ROZWVkZWQi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc19zdHJpbmdp
ZmllckF0dHJpYnV0ZU5vdE5lZWRlZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENFUmVhY3Rpb25zX3N0cmluZ2lmaWVyQXR0
cmlidXRlTm90TmVlZGVkKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aENFUmVhY3Rpb25zIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhDRVJlYWN0aW9ucyksIChp
bnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aENFUmVhY3Rpb25z
Tm90TmVlZGVkKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdENFUmVhY3Rpb25zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q0VSZWFjdGlvbnMiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dENFUmVhY3Rpb25zUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RD
RVJlYWN0aW9uc1Byb3RvdHlwZVRhYmxlID0geyA5LCAzMSwgdHJ1ZSwgSlNUZXN0Q0VSZWFjdGlv
bnM6OmluZm8oKSwgSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0
Q0VSZWFjdGlvbnNQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0
Q0VSZWFjdGlvbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RDRVJlYWN0aW9ucyIsICZCYXNl
OjpzX2luZm8sICZKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlKSB9OwogCiB2b2lkIEpT
VGVzdENFUmVhY3Rpb25zUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCShyZXZpc2lv
biAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDExICs4
OSwxNCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
IH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyUHJvdG90eXBlLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90
eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckRPTUNvbnN0
cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllcj47CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yKSB9Owog
CiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckRPTUNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xMDksMTcgKzExMiwzMCBAQCB0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFz
aCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8K
Kworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJQcm90b3R5cGVUYWJsZUluZGV4WzhdID0geworICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAwLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgMywg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
fTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0g
ICAgeyAidmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJfdmFsdWUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyX3ZhbHVlKSB9IH0sCi0gICAgeyAidmFsdWVXaXRob3V0UmVhY3Rp
b25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyX3ZhbHVlV2l0aG91dFJlYWN0aW9ucyksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJfdmFsdWVXaXRob3V0UmVhY3Rpb25zKSB9IH0sCisg
ICAgeyAidmFsdWUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyX3ZhbHVlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcl92YWx1
ZSkgfSB9LAorICAgIHsgInZhbHVlV2l0aG91dFJlYWN0aW9ucyIsIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJfdmFsdWVXaXRob3V0UmVh
Y3Rpb25zKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcl92YWx1ZVdpdGhvdXRSZWFjdGlv
bnMpIH0gfSwKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclBy
b3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIAotY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyUHJvdG90eXBlVGFibGUgPSB7IDQsIDcsIHRydWUsIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXI6OmluZm8oKSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3Rv
dHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlVGFi
bGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyIiwgJkJhc2U6
OnNfaW5mbywgJkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJv
dG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJ
KHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDIxICsxMTEs
MzEgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0m
KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9
OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZSwgSlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVz
dENhbGxUcmFjZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdENhbGxUcmFjZXI+OwogCi0vKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAq
LworLyogSGFzaCB0YWJsZSBmb3IgQ29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvclRhYmxlSW5kZXhb
Ml0gPSB7CisgICAgeyAwLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCit9OworCiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3JUYWJsZVZhbHVl
c1tdID0KIHsKLSAgICB7ICJ0ZXN0Q29uc3RWYWx1ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9u
ZykoZmFsc2UpIH0gfSwKKyAgICB7ICJ0ZXN0Q29uc3RWYWx1ZSIsIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxv
bmcgbG9uZykoZmFsc2UpIH0gfSwKIH07CiAKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0
Q2FsbFRyYWNlckNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDEsIHRydWUsIG51bGxwdHIsIEpTVGVz
dENhbGxUcmFjZXJDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCBKU1Rlc3RDYWxsVHJhY2VyQ29uc3Ry
dWN0b3JUYWJsZUluZGV4IH07CiBzdGF0aWNfYXNzZXJ0KFRlc3RDYWxsVHJhY2VyOjp0ZXN0Q29u
c3RWYWx1ZSA9PSBmYWxzZSwgInRlc3RDb25zdFZhbHVlIGluIFRlc3RDYWxsVHJhY2VyIGRvZXMg
bm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdENhbGxUcmFjZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENhbGxUcmFj
ZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdENhbGxUcmFjZXJET01Db25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgdW5z
aWduZWQgSlNUZXN0Q2FsbFRyYWNlckRPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwordGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2FsbFRyYWNlckRPTUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0Q2FsbFRyYWNlciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RDYWxsVHJhY2Vy
Q29uc3RydWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDYWxs
VHJhY2VyRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDYWxs
VHJhY2VyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKQEAgLTEzOCwxOCArMTQ4
LDU1IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDYWxsVHJhY2VyRE9NQ29uc3QKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q2FsbFRyYWNlcjo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q2FsbFRyYWNlciJfcyksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rl
c3RDYWxsVHJhY2VyOjppbmZvKCksIEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvclRhYmxlVmFs
dWVzLCAqdGhpcyk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBudWxscHRyLCBKU1Rl
c3RDYWxsVHJhY2VyQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwogfQogCi0vKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLwor
CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0Q2FsbFRyYWNlclBy
b3RvdHlwZVRhYmxlSW5kZXhbMzNdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDYsIC0xIH0sCisgICAgeyAxMiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMSwgMzIgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA4LCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxMywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAyLCAtMSB9LAorICAgIHsgNywgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgNSwgLTEgfSwKKyAgICB7IDExLCAtMSB9LAorICAgIHsgNCwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgOSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxMCwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDMs
IC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJ0ZXN0QXR0cmli
dXRlSW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVJbnRlcmZhY2UpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVJbnRlcmZhY2UpIH0gfSwKLSAgICB7ICJ0ZXN0QXR0
cmlidXRlU3BlY2lmaWVkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVTcGVjaWZpZWQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVTcGVjaWZpZWQpIH0gfSwKLSAgICB7ICJ0ZXN0
QXR0cmlidXRlV2l0aFZhcmlhbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENhbGxUcmFjZXJfdGVzdEF0dHJpYnV0ZVdpdGhWYXJp
YW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0Q2FsbFRyYWNlcl90ZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQpIH0gfSwKLSAg
ICB7ICJ0ZXN0UmVhZG9ubHlBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0Q2FsbFRyYWNlcl90ZXN0UmVhZG9ubHlBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAi
dGVzdEF0dHJpYnV0ZUludGVyZmFjZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdENhbGxUcmFjZXJfdGVzdEF0dHJpYnV0ZUludGVyZmFjZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENhbGxUcmFjZXJf
dGVzdEF0dHJpYnV0ZUludGVyZmFjZSkgfSB9LAorICAgIHsgInRlc3RBdHRyaWJ1dGVTcGVjaWZp
ZWQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDYWxsVHJhY2VyX3Rlc3RB
dHRyaWJ1dGVTcGVjaWZpZWQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVTcGVjaWZp
ZWQpIH0gfSwKKyAgICB7ICJ0ZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQiLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVXaXRoVmFyaWFu
dCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdENhbGxUcmFjZXJfdGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50KSB9IH0sCisgICAg
eyAidGVzdFJlYWRvbmx5QXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDYWxsVHJhY2VyX3Rlc3RS
ZWFkb25seUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKICAgICB7ICJ0ZXN0T3BlcmF0aW9uSW50ZXJm
YWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvbkludGVy
ZmFjZSksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ0ZXN0T3BlcmF0aW9uU3BlY2lmaWVk
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvblNwZWNpZmll
ZCksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ0ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50
cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpb25XaXRoQXJn
dW1lbnRzKSwgKGludHB0cl90KSAoMykgfSB9LApAQCAtMTU4LDEwICsyMDUsMTEgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdENhbGxUcgogICAgIHsgInRlc3RPcGVyYXRpb25X
aXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvbl90ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50KSwgKGludHB0cl90
KSAoMSkgfSB9LAogICAgIHsgInRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1l
bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW9uV2l0aE9w
dGlvbmFsVmFyaWFudEFyZ3VtZW50KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRlc3RP
cGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCksIChp
bnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJ0ZXN0Q29uc3RWYWx1ZSIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsg
KGxvbmcgbG9uZykoZmFsc2UpIH0gfSwKKyAgICB7ICJ0ZXN0Q29uc3RWYWx1ZSIsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5z
aWMsIHsgKGxvbmcgbG9uZykoZmFsc2UpIH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RDYWxsVHJhY2VyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q2FsbFRyYWNlciIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0Q2FsbFRy
YWNlclByb3RvdHlwZVRhYmxlID0geyAxNCwgMzEsIHRydWUsIEpTVGVzdENhbGxUcmFjZXI6Omlu
Zm8oKSwgSlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RDYWxsVHJhY2VyIiwgJkJhc2U6OnNfaW5mbywg
JkpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDE4ICsxNDIsMjggQEAgSlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U6On5KU1Rlc3RDYWxsYmFjawogCiB1c2luZyBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZURP
TUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2U+OwogCi0vKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLworLyog
SGFzaCB0YWJsZSBmb3IgQ29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZUluZGV4
WzRdID0geworICAgIHsgMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogewotICAgIHsg
IkNPTlNUQU5UMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0
YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAotICAgIHsgIkNP
TlNUQU5UMiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50
SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAorICAgIHsgIkNPTlNU
QU5UMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50
ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorICAgIHsgIkNPTlNUQU5U
MiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdl
ciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAogfTsKIAorc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUgPSB7IDIs
IDMsIHRydWUsIG51bGxwdHIsIEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJs
ZVZhbHVlcywgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlSW5kZXggfTsK
IHN0YXRpY19hc3NlcnQoVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpDT05TVEFOVDEgPT0gMSwgIkNP
TlNUQU5UMSBpbiBUZXN0Q2FsbGJhY2tJbnRlcmZhY2UgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJv
bSBJREwiKTsKIHN0YXRpY19hc3NlcnQoVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpDT05TVEFOVDIg
PT0gMiwgIkNPTlNUQU5UMiBpbiBUZXN0Q2FsbGJhY2tJbnRlcmZhY2UgZG9lcyBub3QgbWF0Y2gg
dmFsdWUgZnJvbSBJREwiKTsKIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENhbGxiYWNrSW50
ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RDYWxsYmFja0ludGVyZmFjZURPTUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8
PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlOwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENhbGxiYWNrSW50ZXJmYWNlIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDYWxsYmFja0ludGVyZmFjZURPTUNv
bnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OCwxMSArNzgsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5
VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUsIEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3RvciA9IEpTRE9NQnVpbHRpbkNvbnN0cnVj
dG9yPEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPjsKIAordGVtcGxhdGU8PiBj
b25zdCB1bnNpZ25lZCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0
cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JET01D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yKSB9OwogCiB0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTAzLDE0ICsxMDYsMjEgQEAgdGVtcGxh
dGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTVGVzdENsYQogICAgIHJldHVybiB0ZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JJbml0aWFsaXplVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3Rv
dHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
clByb3RvdHlwZVRhYmxlSW5kZXhbMl0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIC0x
IH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90
eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvcjo6aW5mbygpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvclByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUpIH07
CiAKIHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcy5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDMyICsxNDEsODYgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhh
c1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZSwgSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+OwogCi0vKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3Rv
ciAqLworI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3Rh
dGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yX01J
WElOX0NPTlNUQU5UKFZNJiwgSlNPYmplY3QqKQoreworICAgIHJldHVybiBqc051bWJlcigxKTsK
K30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0
cnVjdG9yX01JWElOX0NPTlNUQU5UKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0
dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkOworfQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK3N0YXRpYyBKU1ZhbHVlIGNy
ZWF0ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rvcl9NSVhJTl9SRUZMRUNURURf
Q09OU1RBTlQoVk0mLCBKU09iamVjdCopCit7CisgICAgcmV0dXJuIGpzTnVtYmVyKDIpOworfQor
CitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0
b3JfTUlYSU5fUkVGTEVDVEVEX0NPTlNUQU5UKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkOworfQorI2VuZGlmCisKKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK3N0YXRpYyBKU1Zh
bHVlIGNyZWF0ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rvcl9QQVJUSUFMX01J
WElOX0NPTlNUQU5UX0ZST01fUEFSVElBTChWTSYsIEpTT2JqZWN0KikKK3sKKyAgICByZXR1cm4g
anNOdW1iZXIoNSk7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNDb25zdHJ1Y3Rvcl9QQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01fUEFSVElBTChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRp
bmcyRW5hYmxlZDsKK30KKyNlbmRpZgorCisvKiBIYXNoIHRhYmxlIGZvciBDb25zdHJ1Y3RvciAq
LworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc0NvbnN0cnVjdG9yVGFibGVJbmRleFs4XSA9IHsKKyAgICB7IDEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDIsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
Cit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KIHsKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJNSVhJTl9DT05TVEFOVCIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRy
aW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorICAgIHsgIk1JWElOX0NPTlNUQU5UIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjaywgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihj
cmVhdGVKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3JfTUlYSU5fQ09OU1RBTlQp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihp
c0VuYWJsZWRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3JfTUlYSU5fQ09OU1RB
TlQpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAg
IHsgIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZyko
MikgfSB9LAorICAgIHsgIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yX01JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlz
RW5hYmxlZEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rvcl9NSVhJTl9SRUZMRUNU
RURfQ09OU1RBTlQpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAw
IH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJp
bnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCisgICAgeyAiUEFSVElBTF9NSVhJTl9DT05TVEFO
VF9GUk9NX1BBUlRJQUwiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQ
cm9wZXJ0eUNhbGxiYWNrLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6
eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1
Y3Rvcl9QQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rvcl9QQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01f
UEFSVElBTCkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9
LAogI2VuZGlmCiB9OwogCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNDb25zdHJ1Y3RvclRhYmxlID0geyAzLCA3LCB0cnVlLCBudWxscHRyLCBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc0NvbnN0cnVjdG9yVGFibGVJbmRleCB9OwogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogc3RhdGljX2Fzc2VydChUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlczo6TUlYSU5fQ09OU1RBTlQgPT0gMSwgIk1JWElOX0NPTlNUQU5UIGluIFRlc3RDb25k
aXRpb25hbEluY2x1ZGVzIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAjZW5kaWYK
QEAgLTE3Nyw3ICsyMzEsOCBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RDb25kaXRpb25hbEluY2x1ZGVz
OjpDCiBzdGF0aWNfYXNzZXJ0KFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpQQVJUSUFMX01JWElO
X0NPTlNUQU5UX0ZST01fUEFSVElBTCA9PSA1LCAiUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9N
X1BBUlRJQUwgaW4gVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgZG9lcyBub3QgbWF0Y2ggdmFsdWUg
ZnJvbSBJREwiKTsKICNlbmRpZgogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDb25kaXRp
b25hbEluY2x1ZGVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzRE9NQ29uc3RydWN0b3IpIH07Cit0
ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNET01Db25z
dHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFz
U3RhdGljUHJvcGVydHlUYWJsZTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0Nv
bnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CkBAIC0xOTAsMjYwICsyNDUsMzY0IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGUKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
OjppbmZvKCksIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvclRhYmxlVmFsdWVz
LCAqdGhpcyk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBudWxscHRyLCBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOworfQorCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYgKCFq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKLSAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIk1JWElOX0NPTlNUQU5UIiksIHN0cmxlbigiTUlYSU5f
Q09OU1RBTlQiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2
bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KK3N0YXRp
YyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5S
ZWFkT25seUF0dHJpYnV0ZShWTSYgdm0sIEpTT2JqZWN0KikKK3sKKyAgICByZXR1cm4gRE9NQXR0
cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNf
bWl4aW5SZWFkT25seUF0dHJpYnV0ZSwgbnVsbHB0ciwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7
IEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OmluZm8oKSwgbnVsbHB0ciB9KTsKK30KKworc3Rh
dGljIGJvb2wgaXNFbmFibGVkSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9taXhp
blJlYWRPbmx5QXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGlu
Z3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkOworfQogI2VuZGlmCisKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBpZiAoIWpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewotICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiTUlYSU5fUkVGTEVDVEVEX0NPTlNUQU5UIiksIHN0cmxlbigiTUlYSU5f
UkVGTEVDVEVEX0NPTlNUQU5UIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAg
ICB9CitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90
eXBlX21peGluQXR0cmlidXRlKFZNJiB2bSwgSlNPYmplY3QqKQoreworICAgIHJldHVybiBET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c19taXhpbkF0dHJpYnV0ZSwgc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc19taXhpbkF0dHJp
YnV0ZSwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6
OmluZm8oKSwgbnVsbHB0ciB9KTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9taXhpbkF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJl
dHVybiBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZDsKK30K
ICNlbmRpZgorCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci0gICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJs
ZWQpIHsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlBBUlRJQUxfTUlYSU5fQ09OU1RB
TlRfRlJPTV9QQVJUSUFMIiksIHN0cmxlbigiUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BB
UlRJQUwiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KK3N0YXRpYyBK
U1ZhbHVlIGNyZWF0ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5DdXN0
b21BdHRyaWJ1dGUoVk0mIHZtLCBKU09iamVjdCopCit7CisgICAgcmV0dXJuIERPTUF0dHJpYnV0
ZUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzX21peGlu
Q3VzdG9tQXR0cmlidXRlLCBzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzX21peGluQ3VzdG9t
QXR0cmlidXRlLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlczo6aW5mbygpLCBudWxscHRyIH0pOworfQorCitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX21peGluQ3VzdG9tQXR0cmlidXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVj
dCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJF
bmFibGVkOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNQcm90b3R5cGVfbWl4aW5Ob2RlQXR0cmlidXRlKFZNJiB2bSwgSlNPYmplY3QqKQoreworICAg
IHJldHVybiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc19taXhpbk5vZGVBdHRyaWJ1dGUsIHNldEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNfbWl4aW5Ob2RlQXR0cmlidXRlLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlczo6aW5mbygpLCBudWxscHRyIH0pOworfQorCitzdGF0aWMgYm9v
bCBpc0VuYWJsZWRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX21peGluTm9kZUF0
dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCku
dGVzdFNldHRpbmcyRW5hYmxlZDsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX3BhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0aWFs
KFZNJiB2bSwgSlNPYmplY3QqKQoreworICAgIHJldHVybiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc19wYXJ0aWFsTWl4aW5BdHRy
aWJ1dGVGcm9tUGFydGlhbCwgbnVsbHB0ciwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IEpTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXM6OmluZm8oKSwgbnVsbHB0ciB9KTsKK30KKworc3RhdGljIGJv
b2wgaXNFbmFibGVkSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9wYXJ0aWFsTWl4
aW5BdHRyaWJ1dGVGcm9tUGFydGlhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorewor
ICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
dHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZDsKK30KKyNlbmRpZgorCisjaWYgKEVO
QUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQorc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1By
b3RvdHlwZV9taXhpbk9wZXJhdGlvbihWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0KQorewor
ICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCgpLCAwLCAibWl4aW5PcGVyYXRpb24iX3MsIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90
b3R5cGVGdW5jdGlvbl9taXhpbk9wZXJhdGlvbik7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxl
ZEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5PcGVyYXRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKKyAgICByZXR1cm4ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVu
YWJsZWQ7Cit9CisjZW5kaWYKKworI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShD
b25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0
ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5Db21wbGV4T3BlcmF0aW9u
KFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpCit7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIDIsICJtaXhpbkNvbXBsZXhP
cGVyYXRpb24iX3MsIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbl9t
aXhpbkNvbXBsZXhPcGVyYXRpb24pOworfQorCitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX21peGluQ29tcGxleE9wZXJhdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OworICAgIHJldHVybiBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5h
YmxlZDsKK30KKyNlbmRpZgorCisjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENv
bmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3RhdGljIEpTVmFsdWUgY3JlYXRl
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9taXhpbkN1c3RvbU9wZXJhdGlvbihW
TSYgdm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0KQoreworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCAwLCAibWl4aW5DdXN0b21PcGVy
YXRpb24iX3MsIGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbl9taXhp
bkN1c3RvbU9wZXJhdGlvbik7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5DdXN0b21PcGVyYXRpb24oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAg
ICByZXR1cm4ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQ7
Cit9CisjZW5kaWYKKworI2lmIChFTkFCTEUoQ29uZGl0aW9uMTEpICYmIEVOQUJMRShDb25kaXRp
b24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3Rh
dGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9taXhp
bkNvbmRpdGlvbmFsT3BlcmF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCksIDAsICJtaXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uIl9zLCBqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25fbWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbik7Cit9CisK
K3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVf
bWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZDsKK30KKyNlbmRpZgorCisjaWYg
KEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQorc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZV9taXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24oVk0mIHZtLCBKU09i
amVjdCogdGhpc09iamVjdCkKK3sKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgMCwgIm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9w
ZXJhdGlvbiJfcywganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uX21p
eGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbik7Cit9CisKK3N0YXRpYyBib29sIGlzRW5h
YmxlZEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5TZXR0aW5nc0NvbmRp
dGlvbmFsT3BlcmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5V
U0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIChqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdz
VmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkICYmIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMo
KS50ZXN0U2V0dGluZzJFbmFibGVkKTsKK30KKyNlbmRpZgorCisjaWYgKEVOQUJMRShDb25kaXRp
b24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3Rh
dGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9taXhp
blJlc3VsdEZpZWxkT3BlcmF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCksIDAsICJtaXhpblJlc3VsdEZpZWxkT3BlcmF0aW9uIl9zLCBqc1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25fbWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbik7Cit9CisK
K3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVf
bWl4aW5SZXN1bHRGaWVsZE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZDsKK30KKyNlbmRpZgorCisjaWYg
KEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSAmJiBFTkFCTEUoQ29u
ZGl0aW9uMzMpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX3BhcnRpYWxNaXhpbk9wZXJhdGlvbkZy
b21QYXJ0aWFsKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpCit7CisgICAgcmV0dXJuIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIDAsICJwYXJ0
aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCJfcywganNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZUZ1bmN0aW9uX3BhcnRpYWxNaXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsKTsKK30K
Kworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZV9wYXJ0aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZDsKK30KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0
aWMgSlNWYWx1ZSBjcmVhdGVKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX01JWElO
X0NPTlNUQU5UKFZNJiwgSlNPYmplY3QqKQoreworICAgIHJldHVybiBqc051bWJlcigxKTsKK30K
Kworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlw
ZV9NSVhJTl9DT05TVEFOVChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdz
VmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZDsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVK
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX01JWElOX1JFRkxFQ1RFRF9DT05TVEFO
VChWTSYsIEpTT2JqZWN0KikKK3sKKyAgICByZXR1cm4ganNOdW1iZXIoMik7Cit9CisKK3N0YXRp
YyBib29sIGlzRW5hYmxlZEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfTUlYSU5f
UkVGTEVDVEVEX0NPTlNUQU5UKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGlu
Z3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkOworfQogI2VuZGlmCisKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0
ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfUEFSVElBTF9NSVhJTl9DT05TVEFO
VF9GUk9NX1BBUlRJQUwoVk0mLCBKU09iamVjdCopCit7CisgICAgcmV0dXJuIGpzTnVtYmVyKDUp
OworfQorCitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJv
dG90eXBlX1BBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAg
cmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkOwog
fQorI2VuZGlmCisKKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitzdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZVRhYmxlSW5kZXhbNjZdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IDIsIDY0IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE0LCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAzLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTYsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyA0LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDcsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDgsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDE1LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IDUsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEwLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAxMywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDksIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgMTEsIC0xIH0sCisgICAgeyA2LCA2NSB9LAorICAgIHsgMTIsIC0xIH0sCit9Owog
Ci0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
IHsKICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgInRlc3RBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNfdGVzdEF0dHIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisg
ICAgeyAidGVzdEF0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNfdGVzdEF0
dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihudWxscHRyKSB9IH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCi0gICAgeyAibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzX21peGluUmVhZE9ubHlBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCisgICAgeyAibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0
ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5SZWFkT25seUF0dHJpYnV0
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+
KGlzRW5hYmxlZEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5SZWFkT25s
eUF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAg
fSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi0gICAgeyAibWl4aW5BdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNfbWl4aW5B
dHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzX21peGluQXR0cmlidXRlKSB9IH0s
CisgICAgeyAibWl4aW5BdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3Jl
YXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9taXhpbkF0dHJpYnV0ZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5h
YmxlZEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5BdHRyaWJ1dGUpIH0g
fSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIm1p
eGluQ3VzdG9tQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzX21peGluQ3VzdG9tQXR0
cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc19taXhpbkN1c3RvbUF0dHJpYnV0ZSkg
fSB9LAorICAgIHsgIm1peGluQ3VzdG9tQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxi
YWNrLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2Fs
bGJhY2s+KGNyZWF0ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5DdXN0
b21BdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxl
ZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX21p
eGluQ3VzdG9tQXR0cmlidXRlKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMs
IHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKLSAgICB7ICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXNfbWl4aW5Ob2RlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc19taXhp
bk5vZGVBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxM
YXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZV9taXhpbk5vZGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVBy
b3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlX21peGluTm9kZUF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5v
SW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAicGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBh
cnRpYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc19wYXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJw
YXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfcGFydGlhbE1peGluQXR0cmlidXRlRnJvbVBhcnRpYWwp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihp
c0VuYWJsZWRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX3BhcnRpYWxNaXhpbkF0
dHJpYnV0ZUZyb21QYXJ0aWFsKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMs
IHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAibWl4aW5PcGVyYXRp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbl9taXhpbk9wZXJh
dGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtaXhpbk9wZXJhdGlvbiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNr
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxi
YWNrPihjcmVhdGVKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX21peGluT3BlcmF0
aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFj
az4oaXNFbmFibGVkSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9taXhpbk9wZXJh
dGlvbikgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAog
I2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIm1peGluQ29tcGxleE9wZXJhdGlvbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uX21peGluQ29tcGxleE9wZXJh
dGlvbiksIChpbnRwdHJfdCkgKDIpIH0gfSwKKyAgICB7ICJtaXhpbkNvbXBsZXhPcGVyYXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlD
YWxsYmFjayksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVy
dHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9taXhp
bkNvbXBsZXhPcGVyYXRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5
RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90
eXBlX21peGluQ29tcGxleE9wZXJhdGlvbikgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50
cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYg
RU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIm1peGlu
Q3VzdG9tT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rp
b25fbWl4aW5DdXN0b21PcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4
aW5DdXN0b21PcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjayksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZV9taXhpbkN1c3RvbU9wZXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5DdXN0b21PcGVyYXRpb24pIH0gfSwKICNlbHNlCiAg
ICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIChFTkFCTEUo
Q29uZGl0aW9uMTEpICYmIEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIy
KSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIm1peGluQ29uZGl0aW9uYWxPcGVyYXRp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVGdW5jdGlvbl9taXhpbkNvbmRp
dGlvbmFsT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1peGluQ29uZGl0
aW9uYWxPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UHJvcGVydHlDYWxsYmFjayksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
c1Byb3RvdHlwZV9taXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9taXhpbkNvbmRpdGlvbmFsT3BlcmF0aW9uKSB9IH0sCiAj
ZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiAo
RU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCi0gICAgeyAibWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlRnVuY3Rpb25fbWl4aW5TZXR0aW5nc0NvbmRp
dGlvbmFsT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1peGluU2V0dGlu
Z3NDb25kaXRpb25hbE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlX21peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5h
YmxlZEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfbWl4aW5TZXR0aW5nc0NvbmRp
dGlvbmFsT3BlcmF0aW9uKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsg
MCwgMCB9IH0sCiAjZW5kaWYKICNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29u
ZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAibWl4aW5SZXN1bHRGaWVs
ZE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZUZ1bmN0aW9uX21p
eGluUmVzdWx0RmllbGRPcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWl4
aW5SZXN1bHRGaWVsZE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzUHJvdG90eXBlX21peGluUmVzdWx0RmllbGRPcGVyYXRpb24pLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX21peGluUmVzdWx0RmllbGRPcGVyYXRpb24p
IH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRp
ZgogI2lmIChFTkFCTEUoQ29uZGl0aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikgJiYgRU5B
QkxFKENvbmRpdGlvbjMzKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgInBhcnRpYWxN
aXhpbk9wZXJhdGlvbkZyb21QYXJ0aWFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90
eXBlRnVuY3Rpb25fcGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCisgICAgeyAicGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFj
ayksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxs
YmFjaz4oY3JlYXRlSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9wYXJ0aWFsTWl4
aW5PcGVyYXRpb25Gcm9tUGFydGlhbCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJv
cGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQ
cm90b3R5cGVfcGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwpIH0gfSwKICNlbHNlCiAg
ICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIk1JWElOX0NPTlNUQU5U
IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2Vy
LCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCisgICAgeyAiTUlYSU5fQ09OU1RB
TlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxi
YWNrLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2Fs
bGJhY2s+KGNyZWF0ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfTUlYSU5fQ09O
U1RBTlQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxi
YWNrPihpc0VuYWJsZWRKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX01JWElOX0NP
TlNUQU5UKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0s
CiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
LSAgICB7ICJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxv
bmcpKDIpIH0gfSwKKyAgICB7ICJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVfTUlYSU5fUkVGTEVDVEVEX0NPTlNUQU5U
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4o
aXNFbmFibGVkSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZV9NSVhJTl9SRUZMRUNU
RURfQ09OU1RBTlQpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAw
IH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQotICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJp
bnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCisgICAgeyAiUEFSVElBTF9NSVhJTl9DT05TVEFO
VF9GUk9NX1BBUlRJQUwiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQ
cm9wZXJ0eUNhbGxiYWNrLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6
eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGVfUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlX1BBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJU
SUFMKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAj
ZW5kaWYKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc1Byb3RvdHlwZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZVRhYmxlID0geyAxNywgNjMsIHRydWUsIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM6OmluZm8oKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlVGFibGVJ
bmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlRlc3RDb25kaXRpb25hbEluY2x1ZGVzIiwgJkJhc2U6OnNfaW5mbywg
JkpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlKSB9OwogCiB2
b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQ
cm9wZXJ0aWVzKHZtLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjppbmZvKCksIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIGJvb2wg
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOwotI2lmIChFTkFCTEUoQ29uZGl0
aW9uMTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAg
ICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQp
IHsKLSAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbk9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluT3Bl
cmF0aW9uIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgfQotI2VuZGlm
Ci0jaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCku
dGVzdFNldHRpbmcyRW5hYmxlZCkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluQ29tcGxleE9w
ZXJhdGlvbiIpLCBzdHJsZW4oIm1peGluQ29tcGxleE9wZXJhdGlvbiIpKTsKLSAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
LSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSNlbmRpZgotI2lmIChFTkFCTEUoQ29uZGl0aW9u
MTIpICYmIEVOQUJMRShDb25kaXRpb24yMikpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBp
ZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsK
LSAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJtaXhpbkN1c3RvbU9wZXJhdGlvbiIpLCBzdHJsZW4oIm1peGlu
Q3VzdG9tT3BlcmF0aW9uIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0g
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAg
fQotI2VuZGlmCi0jaWYgKEVOQUJMRShDb25kaXRpb24xMSkgJiYgRU5BQkxFKENvbmRpdGlvbjEy
KSAmJiBFTkFCTEUoQ29uZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYg
KCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7Ci0g
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigibWl4aW5Db25kaXRpb25hbE9wZXJhdGlvbiIpLCBzdHJsZW4oIm1p
eGluQ29uZGl0aW9uYWxPcGVyYXRpb24iKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKLSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5BQkxFKENvbmRpdGlvbjEyKSAmJiBFTkFCTEUoQ29u
ZGl0aW9uMjIpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYgKCEoanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkICYmIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0
aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpKSB7Ci0gICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
bWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uIiksIHN0cmxlbigibWl4aW5TZXR0aW5n
c0NvbmRpdGlvbmFsT3BlcmF0aW9uIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7Ci0gICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRp
dGlvbjIyKSkgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
dHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewotICAgICAgICBoYXNEaXNhYmxl
ZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
Im1peGluUmVzdWx0RmllbGRPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblJlc3VsdEZpZWxkT3Bl
cmF0aW9uIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgfQotI2VuZGlm
Ci0jaWYgKEVOQUJMRShDb25kaXRpb24xMikgJiYgRU5BQkxFKENvbmRpdGlvbjIyKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMzMpKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7Ci0gICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigicGFydGlhbE1peGluT3BlcmF0aW9uRnJvbVBhcnRpYWwiKSwgc3RybGVuKCJwYXJ0
aWFsTWl4aW5PcGVyYXRpb25Gcm9tUGFydGlhbCIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVz
dFNldHRpbmcyRW5hYmxlZCkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluUmVhZE9ubHlBdHRy
aWJ1dGUiKSwgc3RybGVuKCJtaXhpblJlYWRPbmx5QXR0cmlidXRlIikpOwotICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owot
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NW
YWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFibGVkKSB7Ci0gICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWl4aW5B
dHRyaWJ1dGUiKSwgc3RybGVuKCJtaXhpbkF0dHJpYnV0ZSIpKTsKLSAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQotICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVz
KCkudGVzdFNldHRpbmcyRW5hYmxlZCkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1peGluQ3VzdG9t
QXR0cmlidXRlIiksIHN0cmxlbigibWl4aW5DdXN0b21BdHRyaWJ1dGUiKSk7Ci0gICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5n
c1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKLSAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhp
bk5vZGVBdHRyaWJ1dGUiKSwgc3RybGVuKCJtaXhpbk5vZGVBdHRyaWJ1dGUiKSk7Ci0gICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQ29uZGl0
aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0
aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQpIHsKLSAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJw
YXJ0aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCIpLCBzdHJsZW4oInBhcnRpYWxNaXhpbkF0
dHJpYnV0ZUZyb21QYXJ0aWFsIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0g
ICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi0gICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJF
bmFibGVkKSB7Ci0gICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwot
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiTUlYSU5fQ09OU1RBTlQiKSwgc3RybGVuKCJN
SVhJTl9DT05TVEFOVCIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0K
LSNlbmRpZgotI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQot
ICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmcyRW5hYmxl
ZCkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIpLCBzdHJs
ZW4oIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQotICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVz
dFNldHRpbmcyRW5hYmxlZCkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlBBUlRJQUxfTUlYSU5fQ09O
U1RBTlRfRlJPTV9QQVJUSUFMIiksIHN0cmxlbigiUEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9N
X1BBUlRJQUwiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2
bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0jZW5k
aWYKLSAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+
aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKICAg
ICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAkocmV2aXNpb24gMjc5
NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsMzIgKzExMiwx
NCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYp
OworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07
CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlUHJvdG90eXBlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlUHJvdG90eXBl
OjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZURPTUNvbnN0cnVj
dG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZT47CiAKLS8qIEhhc2ggdGFibGUgKi8KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVUYWJsZUluZGV4Wzhd
ID0gewotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDEsIC0xIH0sCi0g
ICAgeyAwLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7IC0x
LCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi19OwotCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAg
eyAicnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVB
dHRyaWJ1dGVVbmZvcmdlYWJsZSkgfSB9LAotICAgIHsgInNldHRpbmdzQ29uZGl0aW9uYWxseVJl
YWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5nc0NvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVfc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlVW5mb3JnZWFibGUpIH0g
fSwKLX07Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZVRhYmxlID0geyAyLCA3LCB0cnVlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpp
bmZvKCksIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVUYWJsZVZhbHVlcywgSlNUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZVRhYmxlSW5kZXggfTsKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWdu
ZWQgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZURPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZURPTUNv
bnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNTMsODQgKzEzNSwx
MDYgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkVwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBm
b3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlUHJvdG90eXBlVGFibGVJbmRleFsxOV0gPSB7Cisg
ICAgeyA2LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDQs
IDE4IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIDE3IH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAxNiB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMiwgLTEgfSwKKyAg
ICB7IDMsIC0xIH0sCisgICAgeyA1LCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAjaWYgRU5BQkxFKENPTkRJVElPTikKLSAgICB7
ICJjb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlX2NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlX2NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJj
b25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9jb25kaXRpb25hbGx5UmVhZFdyaXRl
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9jb25kaXRpb25hbGx5UmVh
ZFdyaXRlQXR0cmlidXRlKSB9IH0sCiAjZWxzZQotICAgIHsgImNvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVBdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0
aW9uYWxseVJlYWRXcml0ZV9jb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAor
ICAgIHsgImNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGVfY29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0g
fSwKICNlbmRpZgogI2lmIEVOQUJMRShDT05ESVRJT04yKQogI2lmIEVOQUJMRShDT05ESVRJT04p
Ci0gICAgeyAiY29uZGl0aW9uYWxBbmRDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX2NvbmRpdGlvbmFsQW5kQ29uZGl0aW9uYWxseVJlYWRX
cml0ZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfY29uZGl0aW9uYWxB
bmRDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKSB9IH0sCisgICAgeyAiY29uZGl0aW9u
YWxBbmRDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9jb25kaXRpb25hbEFuZENv
bmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlX2NvbmRpdGlvbmFsQW5kQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSkgfSB9LAog
I2Vsc2UKLSAgICB7ICJjb25kaXRpb25hbEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1
dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZV9jb25kaXRpb25hbEFuZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCisgICAgeyAiY29uZGl0aW9uYWxBbmRDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRl
IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX2NvbmRpdGlvbmFsQW5kQ29u
ZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICNlbmRpZgogI2Vsc2UKICAgICB7
IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCi0gICAgeyAicnVudGltZUNv
bmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVf
cnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlX3J1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKSB9IH0s
CisgICAgeyAicnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3J1bnRp
bWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZV9ydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSkgfSB9LAogICAg
IHsgInJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvciks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9ydW50aW1lQ29uZGl0aW9uYWxs
eVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
X3J1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSkgfSB9LAotICAg
IHsgInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZV9zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3NldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0
ZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0
dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGVfc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVB
dHRyaWJ1dGUpIH0gfSwKICAgICB7ICJzZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRy
aWJ1dGVQcm9taXNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
X3NldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlX3NldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJp
YnV0ZVByb21pc2UpIH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZSkgfTsKK3N0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZVRhYmxlID0g
eyA3LCAxNSwgdHJ1ZSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6aW5mbygpLCBKU1Rl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8g
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZVByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6OmluZm8oKSwgSlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgYm9vbCBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gZmFsc2U7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7Ci0gICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigicnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiKSwg
c3RybGVuKCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIpKTsKLSAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKLSAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21p
c2UiKSwgc3RybGVuKCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21p
c2UiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0gICAgaWYgKCFk
b3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RGZWF0
dXJlRW5hYmxlZCkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJl
YWRXcml0ZUF0dHJpYnV0ZSIpLCBzdHJsZW4oInNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0
ZUF0dHJpYnV0ZSIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSAg
ICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzVmFsdWVzKCku
dGVzdEZlYXR1cmVFbmFibGVkKSB7Ci0gICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigic2V0dGluZ3NDb25kaXRp
b25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSIpLCBzdHJsZW4oInNldHRpbmdzQ29uZGl0
aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2UiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKLSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKLSAgICB9Ci0gICAgLy8gQWRkaW5nIGJhY2sgYXR0cmlidXRlLCBidXQgYXMg
cmVhZG9ubHksIGFmdGVyIHJlbW92aW5nIHRoZSByZWFkLXdyaXRlIHZhcmlhbnQgYWJvdmUuIAor
ICAgIC8vIFNoYWRvdyByZWFkLXdyaXRlIHZhcmlhbnQgZnJvbSB0aGUgc3RhdGljIGhhc2ggdGFi
bGUuCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRl
c3RGZWF0dXJlRW5hYmxlZCgpKQotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwg
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkucnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQdWJsaWNOYW1lKCksIEpT
Qzo6RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUsIG51bGxw
dHIsIEpTQzo6RE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IEpTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGU6OmluZm8oKSwgbnVsbHB0ciB9KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpKSk7Ci0gICAgLy8gQWRkaW5nIGJh
Y2sgYXR0cmlidXRlLCBidXQgYXMgcmVhZG9ubHksIGFmdGVyIHJlbW92aW5nIHRoZSByZWFkLXdy
aXRlIHZhcmlhbnQgYWJvdmUuIAorICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwg
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkucnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQdWJsaWNOYW1lKCksIEpT
Qzo6RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUsIG51bGxw
dHIsIEpTQzo6RE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IEpTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGU6OmluZm8oKSwgbnVsbHB0ciB9KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAg
Ly8gU2hhZG93IHJlYWQtd3JpdGUgdmFyaWFudCBmcm9tIHRoZSBzdGF0aWMgaGFzaCB0YWJsZS4K
ICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZl
YXR1cmVFbmFibGVkKCkpCi0gICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5y
dW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2VQdWJsaWNOYW1lKCks
IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlX3J1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSwgbnVsbHB0
ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSkpOwotICAgIC8vIEFkZGluZyBiYWNrIGF0
dHJpYnV0ZSwgYnV0IGFzIHJlYWRvbmx5LCBhZnRlciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2
YXJpYW50IGFib3ZlLiAKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnJ1
bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlVW5mb3JnZWFibGVQdWJsaWNOYW1l
KCksIEpTQzo6RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVV
bmZvcmdlYWJsZSwgbnVsbHB0ciwgSlNDOjpET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6aW5mbygpLCBudWxscHRyIH0pLCBhdHRyaWJ1dGVzRm9y
U3RydWN0dXJlKEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgLy8g
U2hhZG93IHJlYWQtd3JpdGUgdmFyaWFudCBmcm9tIHRoZSBzdGF0aWMgaGFzaCB0YWJsZS4KKyAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1
cmVFbmFibGVkKCkpCisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5ydW50
aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlUHJpdmF0ZVB1Ymxp
Y05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdl
YWJsZVByaXZhdGUsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7CisgICAgLy8gU2hh
ZG93IHJlYWQtd3JpdGUgdmFyaWFudCBmcm9tIHRoZSBzdGF0aWMgaGFzaCB0YWJsZS4KKyAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVF
bmFibGVkKCkpCisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5ydW50aW1l
Q29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVByb21pc2VQdWJsaWNOYW1lKCksIEN1c3Rv
bUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3J1
bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlUHJvbWlzZSwgbnVsbHB0ciksIGF0
dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSk7CisgICAgLy8gU2hhZG93IHJlYWQtd3JpdGUgdmFyaWFudCBmcm9tIHRoZSBzdGF0aWMg
aGFzaCB0YWJsZS4KKyAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNl
dHRpbmdzVmFsdWVzKCkudGVzdEZlYXR1cmVFbmFibGVkKQorICAgICAgICBwdXREaXJlY3RDdXN0
b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KS0+YnVpbHRpbk5hbWVzKCkuc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRl
UHVibGljTmFtZSgpLCBKU0M6OkRPTUF0dHJpYnV0ZUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBq
c1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3NldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0
ZUF0dHJpYnV0ZSwgbnVsbHB0ciwgSlNDOjpET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6aW5mbygpLCBudWxscHRyIH0pLCBhdHRyaWJ1dGVzRm9y
U3RydWN0dXJlKEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpKTsKKyAgICAvLyBTaGFkb3cgcmVhZC13cml0ZSB2YXJpYW50IGZyb20gdGhlIHN0
YXRpYyBoYXNoIHRhYmxlLgogICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQpCi0gICAgICAgIHB1dERpcmVj
dEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpLT5idWlsdGluTmFtZXMoKS5zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRy
aWJ1dGVQdWJsaWNOYW1lKCksIEpTQzo6RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGpzVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfc2V0dGluZ3NDb25kaXRpb25hbGx5UmVh
ZFdyaXRlQXR0cmlidXRlLCBudWxscHRyLCBKU0M6OkRPTUF0dHJpYnV0ZUFubm90YXRpb24geyBK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjppbmZvKCksIG51bGxwdHIgfSksIGF0dHJpYnV0
ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSkpOwotICAgIC8vIEFkZGluZyBiYWNrIGF0dHJpYnV0ZSwgYnV0IGFzIHJlYWRvbmx5LCBhZnRl
ciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2YXJpYW50IGFib3ZlLiAKKyAgICAgICAgcHV0RGly
ZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0
dHJpYnV0ZVVuZm9yZ2VhYmxlUHVibGljTmFtZSgpLCBKU0M6OkRPTUF0dHJpYnV0ZUdldHRlclNl
dHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3NldHRpbmdzQ29u
ZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlLCBudWxscHRyLCBKU0M6OkRP
TUF0dHJpYnV0ZUFubm90YXRpb24geyBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjppbmZv
KCksIG51bGxwdHIgfSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICAvLyBTaGFkb3cgcmVhZC13cml0ZSB2YXJpYW50IGZy
b20gdGhlIHN0YXRpYyBoYXNoIHRhYmxlLgogICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+KGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQpCi0gICAgICAg
IHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFk
V3JpdGVBdHRyaWJ1dGVQcm9taXNlUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5nc0NvbmRpdGlvbmFs
bHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVj
dHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IpKSk7Ci0gICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3Ry
dWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQotICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVj
dCh2bSk7CisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zZXR0aW5nc0Nv
bmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGVQdWJsaWNOYW1l
KCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlX3NldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxl
UHJpdmF0ZSwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKKyAgICAvLyBTaGFkb3cg
cmVhZC13cml0ZSB2YXJpYW50IGZyb20gdGhlIHN0YXRpYyBoYXNoIHRhYmxlLgorICAgIGlmICgh
ZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0RmVh
dHVyZUVuYWJsZWQpCisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zZXR0
aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlUHVibGljTmFtZSgpLCBD
dXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0
ZV9zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVQcm9taXNlLCBudWxscHRy
KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsK
IH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6OnNfaW5m
byA9IHsgIlRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKSB9OworLyogSGFzaCB0YWJsZSBmb3IgSW5z
dGFuY2UgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGVJbnN0YW5jZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCit9
OworCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlSW5zdGFuY2VUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJydW50aW1lQ29uZGl0aW9u
YWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVV
bmZvcmdlYWJsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfcnVudGltZUNvbmRpdGlv
bmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZSkgfSB9LAorICAgIHsgInNldHRpbmdz
Q29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlIiwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVfc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRl
QXR0cmlidXRlVW5mb3JnZWFibGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlX3NldHRp
bmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlKSB9IH0sCit9Owor
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVJbnN0
YW5jZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpp
bmZvKCksIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVJbnN0YW5jZVRhYmxlVmFsdWVzLCBK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlSW5zdGFuY2VUYWJsZUluZGV4IH07Citjb25zdCBD
bGFzc0luZm8gSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6c19pbmZvID0geyAiVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZUluc3RhbmNlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSkgfTsKIAogSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZTo6SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlPiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXI8VGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGU+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQpAQCAtMjQ0LDgg
KzI0OCw4IEBAIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6ZmluaXMKIAogICAg
IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBb
QWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFz
c2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKIAotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZt
LCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFt
ZXMoKS5ydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlUHJp
dmF0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlX3J1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmli
dXRlVW5mb3JnZWFibGVQcml2YXRlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpKTsKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2V0dGlu
Z3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlVW5mb3JnZWFibGVQcml2YXRlUHJpdmF0
ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGVfc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlVW5mb3Jn
ZWFibGVQcml2YXRlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpKTsKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucnVudGltZUNvbmRpdGlv
bmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGVQcml2YXRlTmFtZSgpLCBD
dXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0
ZV9ydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlUHJpdmF0
ZSwgc2V0SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9ydW50aW1lQ29uZGl0aW9uYWxseVJl
YWRXcml0ZUF0dHJpYnV0ZVVuZm9yZ2VhYmxlUHJpdmF0ZSksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikpOworICAgIHB1dERpcmVj
dEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpLT5idWlsdGluTmFtZXMoKS5zZXR0aW5nc0NvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRy
aWJ1dGVVbmZvcmdlYWJsZVByaXZhdGVQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwganNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZV9zZXR0aW5nc0NvbmRpdGlv
bmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGVVbmZvcmdlYWJsZVByaXZhdGUsIHNldEpTVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGVfc2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRl
VW5mb3JnZWFibGVQcml2YXRlKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSk7CiB9CiAKIEpTT2JqZWN0KiBKU1Rlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHJldmlzaW9uIDI3OTUwMykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDAsMTEgKzUwMCwxNCBAQCBwcml2YXRlOgogICAgIH0K
IAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RET01KSVRQcm90b3R5cGUsIEpTVGVzdERPTUpJVFByb3Rv
dHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdERPTUpJVERPTUNvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RE9NSklUPjsKIAordGVtcGxhdGU8PiBj
b25zdCB1bnNpZ25lZCBKU1Rlc3RET01KSVRET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dERPTUpJVERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RE9NSklUIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RET01KSVRE
T01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERPTUpJVERPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC01MTksNTQgKzUyMiwxOTcgQEAgdGVtcGxh
dGU8PiB2b2lkIEpTVGVzdERPTUpJVERPTUNvbnN0cnVjdAogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8q
IEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBl
ICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RET01KSVRQ
cm90b3R5cGVUYWJsZUluZGV4WzEzOF0gPSB7CisgICAgeyAxNSwgLTEgfSwKKyAgICB7IDIsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEyLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDI1LCAtMSB9LAorICAgIHsgNCwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgMTcsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDM1LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDEzLCAtMSB9LAorICAgIHsgMzQsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTQsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDExLCAx
MzcgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxNiwgMTI5IH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjcsIDEzMyB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAzNiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxOSwgLTEgfSwKKyAgICB7
IDIxLCAxMzEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyMiwg
MTM1IH0sCisgICAgeyAzMiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDMsIDEzNCB9LAorICAgIHsgMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDcsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDI4LCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA4LCAx
MzYgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyOSwgLTEgfSwKKyAgICB7
IDIwLCAxMzAgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMTgsIC0xIH0sCisgICAgeyA2LCAxMjggfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
MjYsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDksIC0xIH0sCisgICAgeyAxMCwgLTEgfSwKKyAg
ICB7IDIzLCAtMSB9LAorICAgIHsgMjQsIC0xIH0sCisgICAgeyAzMCwgMTMyIH0sCisgICAgeyAz
MSwgLTEgfSwKKyAgICB7IDMzLCAtMSB9LAorICAgIHsgMzcsIC0xIH0sCisgICAgeyAzOCwgLTEg
fSwKKyAgICB7IDM5LCAtMSB9LAorICAgIHsgNDAsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RET01KSVRQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsK
ICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RE9NSklUQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCi0gICAgeyAiYW55QXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEFueUF0dHIpLCAoaW50cHRyX3QpICgw
KSB9IH0sCi0gICAgeyAiYm9vbGVhbkF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRCb29sZWFuQXR0ciksIChp
bnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJieXRlQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEJ5dGVBdHRy
KSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgIm9jdGV0QXR0ciIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklU
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVE9j
dGV0QXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJzaG9ydEF0dHIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxj
b25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RE
T01KSVRTaG9ydEF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAidW5zaWduZWRTaG9y
dEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0
dHJpYnV0ZUZvclRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ciksIChpbnRwdHJfdCkgKDApIH0g
fSwKLSAgICB7ICJsb25nQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVExvbmdBdHRyKSwgKGludHB0cl90KSAo
MCkgfSB9LAotICAgIHsgInVuc2lnbmVkTG9uZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRVbnNpZ25lZExv
bmdBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgImxvbmdMb25nQXR0ciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NSklUQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVz
dERPTUpJVExvbmdMb25nQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJ1bnNpZ25l
ZExvbmdMb25nQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigm
RE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyKSwgKGludHB0
cl90KSAoMCkgfSB9LAotICAgIHsgImZsb2F0QXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEZsb2F0QXR0ciks
IChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJ1bnJlc3RyaWN0ZWRGbG9hdEF0dHIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRl
c3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAg
eyAiZG91YmxlQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigm
RE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVERvdWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9
IH0sCi0gICAgeyAidW5yZXN0cmljdGVkRG91YmxlQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVFVucmVzdHJp
Y3RlZERvdWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAiZG9tU3RyaW5nQXR0
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmli
dXRlRm9yVGVzdERPTUpJVERvbVN0cmluZ0F0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAg
eyAiYnl0ZVN0cmluZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
Kj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRCeXRlU3RyaW5nQXR0ciksIChpbnRwdHJf
dCkgKDApIH0gfSwKLSAgICB7ICJ1c3ZTdHJpbmdBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcio+KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUVXN2U3RyaW5n
QXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJub2RlQXR0ciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
SklUQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJ
VE5vZGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgImJvb2xlYW5OdWxsYWJsZUF0
dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJp
YnV0ZUZvclRlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9
LAotICAgIHsgImJ5dGVOdWxsYWJsZUF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRy
KSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgIm9jdGV0TnVsbGFibGVBdHRyIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01KSVRBdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0
RE9NSklUT2N0ZXROdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAic2hv
cnROdWxsYWJsZUF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4o
JkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ciksIChpbnRwdHJf
dCkgKDApIH0gfSwKLSAgICB7ICJ1bnNpZ25lZFNob3J0TnVsbGFibGVBdHRyIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01KSVRBdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29u
c3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9N
SklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7
ICJsb25nTnVsbGFibGVBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cio+KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ciksIChpbnRw
dHJfdCkgKDApIH0gfSwKLSAgICB7ICJ1bnNpZ25lZExvbmdOdWxsYWJsZUF0dHIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxj
b25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RE
T01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAg
eyAibG9uZ0xvbmdOdWxsYWJsZUF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0
ciksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJ1bnNpZ25lZExvbmdMb25nTnVsbGFibGVB
dHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+KCZET01KSVRBdHRy
aWJ1dGVGb3JUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ciksIChpbnRwdHJf
dCkgKDApIH0gfSwKLSAgICB7ICJmbG9hdE51bGxhYmxlQXR0ciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEZsb2F0
TnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgInVucmVzdHJpY3RlZEZs
b2F0TnVsbGFibGVBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+
KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0
dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAiZG91YmxlTnVsbGFibGVBdHRyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01KSVRBdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+KCZET01KSVRBdHRyaWJ1dGVGb3JU
ZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsg
InVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVFVucmVzdHJpY3Rl
ZERvdWJsZU51bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJkb21TdHJp
bmdOdWxsYWJsZUF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4o
JkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50
cHRyX3QpICgwKSB9IH0sCi0gICAgeyAiYnl0ZVN0cmluZ051bGxhYmxlQXR0ciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NSklUQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNv
bnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERP
TUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAi
dXN2U3RyaW5nTnVsbGFibGVBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcio+KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRy
KSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgIm5vZGVOdWxsYWJsZUF0dHIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUpJVEF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxj
b25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RE
T01KSVROb2RlTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgImdldEF0
dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RE
T01KSVRQcm90b3R5cGVGdW5jdGlvbl9nZXRBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVz
dERPTUpJVEdldEF0dHJpYnV0ZSkgfSB9LAotICAgIHsgIml0ZW0iLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24gfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01KSVRGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25faXRl
bSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSo+
KCZET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUSXRlbSkgfSB9LAotICAgIHsgImhhc0F0dHJp
YnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbl9oYXNBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVzdERP
TUpJVEhhc0F0dHJpYnV0ZSkgfSB9LAotICAgIHsgImdldEVsZW1lbnRCeUlkIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NSklURnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uX2dldEVsZW1lbnRCeUlkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRP
TUpJVDo6U2lnbmF0dXJlKj4oJkRPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRFbGVtZW50
QnlJZCkgfSB9LAotICAgIHsgImdldEVsZW1lbnRzQnlOYW1lIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NSklURnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uX2dldEVs
ZW1lbnRzQnlOYW1lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6
U2lnbmF0dXJlKj4oJkRPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRFbGVtZW50c0J5TmFt
ZSkgfSB9LAorICAgIHsgImFueUF0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+KCZET01KSVRBdHRyaWJ1
dGVGb3JUZXN0RE9NSklUQW55QXR0ciksIChpbnRwdHJfdCkgKG51bGxwdHIpIH0gfSwKKyAgICB7
ICJib29sZWFuQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxj
b25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RE
T01KSVRCb29sZWFuQXR0ciksIChpbnRwdHJfdCkgKG51bGxwdHIpIH0gfSwKKyAgICB7ICJieXRl
QXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRB
dHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRCeXRl
QXR0ciksIChpbnRwdHJfdCkgKG51bGxwdHIpIH0gfSwKKyAgICB7ICJvY3RldEF0dHIiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcio+KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUT2N0ZXRBdHRyKSwgKGlu
dHB0cl90KSAobnVsbHB0cikgfSB9LAorICAgIHsgInNob3J0QXR0ciIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
Kj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRTaG9ydEF0dHIpLCAoaW50cHRyX3QpIChu
dWxscHRyKSB9IH0sCisgICAgeyAidW5zaWduZWRTaG9ydEF0dHIiLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+
KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHIpLCAoaW50cHRy
X3QpIChudWxscHRyKSB9IH0sCisgICAgeyAibG9uZ0F0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+KCZE
T01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUTG9uZ0F0dHIpLCAoaW50cHRyX3QpIChudWxscHRy
KSB9IH0sCisgICAgeyAidW5zaWduZWRMb25nQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJ
VEF0dHJpYnV0ZUZvclRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyKSwgKGludHB0cl90KSAobnVs
bHB0cikgfSB9LAorICAgIHsgImxvbmdMb25nQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJ
VEF0dHJpYnV0ZUZvclRlc3RET01KSVRMb25nTG9uZ0F0dHIpLCAoaW50cHRyX3QpIChudWxscHRy
KSB9IH0sCisgICAgeyAidW5zaWduZWRMb25nTG9uZ0F0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+KCZE
T01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHIpLCAoaW50cHRy
X3QpIChudWxscHRyKSB9IH0sCisgICAgeyAiZmxvYXRBdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigm
RE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEZsb2F0QXR0ciksIChpbnRwdHJfdCkgKG51bGxw
dHIpIH0gfSwKKyAgICB7ICJ1bnJlc3RyaWN0ZWRGbG9hdEF0dHIiLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+
KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyKSwgKGlu
dHB0cl90KSAobnVsbHB0cikgfSB9LAorICAgIHsgImRvdWJsZUF0dHIiLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cio+KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklURG91YmxlQXR0ciksIChpbnRwdHJfdCkg
KG51bGxwdHIpIH0gfSwKKyAgICB7ICJ1bnJlc3RyaWN0ZWREb3VibGVBdHRyIiwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0
dHIpLCAoaW50cHRyX3QpIChudWxscHRyKSB9IH0sCisgICAgeyAiZG9tU3RyaW5nQXR0ciIsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUs
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVREb21TdHJpbmdBdHRy
KSwgKGludHB0cl90KSAobnVsbHB0cikgfSB9LAorICAgIHsgImJ5dGVTdHJpbmdBdHRyIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRy
KSwgKGludHB0cl90KSAobnVsbHB0cikgfSB9LAorICAgIHsgInVzdlN0cmluZ0F0dHIiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcio+KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUVXN2U3RyaW5nQXR0ciks
IChpbnRwdHJfdCkgKG51bGxwdHIpIH0gfSwKKyAgICB7ICJub2RlQXR0ciIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUsIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVROb2RlQXR0ciksIChpbnRwdHJfdCkg
KG51bGxwdHIpIH0gfSwKKyAgICB7ICJib29sZWFuTnVsbGFibGVBdHRyIiwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIpLCAo
aW50cHRyX3QpIChudWxscHRyKSB9IH0sCisgICAgeyAiYnl0ZU51bGxhYmxlQXR0ciIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUsIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRy
KSwgKGludHB0cl90KSAobnVsbHB0cikgfSB9LAorICAgIHsgIm9jdGV0TnVsbGFibGVBdHRyIiwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0
ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVE9jdGV0TnVsbGFi
bGVBdHRyKSwgKGludHB0cl90KSAobnVsbHB0cikgfSB9LAorICAgIHsgInNob3J0TnVsbGFibGVB
dHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0
dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVFNob3J0
TnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAobnVsbHB0cikgfSB9LAorICAgIHsgInVuc2lnbmVk
U2hvcnROdWxsYWJsZUF0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+KCZET01KSVRBdHRyaWJ1dGVGb3JU
ZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKG51bGxwdHIp
IH0gfSwKKyAgICB7ICJsb25nTnVsbGFibGVBdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklU
QXR0cmlidXRlRm9yVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpIChudWxs
cHRyKSB9IH0sCisgICAgeyAidW5zaWduZWRMb25nTnVsbGFibGVBdHRyIiwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIqPigmRE9NSklUQXR0cmlidXRlRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0
ciksIChpbnRwdHJfdCkgKG51bGxwdHIpIH0gfSwKKyAgICB7ICJsb25nTG9uZ051bGxhYmxlQXR0
ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRy
aWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRMb25nTG9u
Z051bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKG51bGxwdHIpIH0gfSwKKyAgICB7ICJ1bnNpZ25l
ZExvbmdMb25nTnVsbGFibGVBdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRl
Rm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpIChu
dWxscHRyKSB9IH0sCisgICAgeyAiZmxvYXROdWxsYWJsZUF0dHIiLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+
KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIpLCAoaW50cHRy
X3QpIChudWxscHRyKSB9IH0sCisgICAgeyAidW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmli
dXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcio+KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRmxvYXROdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpIChudWxscHRyKSB9IH0sCisgICAgeyAi
ZG91YmxlTnVsbGFibGVBdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PGNvbnN0IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqPigmRE9NSklUQXR0cmlidXRlRm9y
VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKG51bGxwdHIpIH0gfSwK
KyAgICB7ICJ1bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIiLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OkdldHRlclNldHRlcio+
KCZET01KSVRBdHRyaWJ1dGVGb3JUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVB
dHRyKSwgKGludHB0cl90KSAobnVsbHB0cikgfSB9LAorICAgIHsgImRvbVN0cmluZ051bGxhYmxl
QXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRB
dHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVREb21T
dHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpIChudWxscHRyKSB9IH0sCisgICAgeyAiYnl0
ZVN0cmluZ051bGxhYmxlQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZv
clRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAobnVsbHB0cikg
fSB9LAorICAgIHsgInVzdlN0cmluZ051bGxhYmxlQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKj4oJkRP
TUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRy
X3QpIChudWxscHRyKSB9IH0sCisgICAgeyAibm9kZU51bGxhYmxlQXR0ciIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUsIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKj4oJkRPTUpJVEF0dHJpYnV0ZUZvclRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyKSwgKGlu
dHB0cl90KSAobnVsbHB0cikgfSB9LAorICAgIHsgImdldEF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklURnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25fZ2V0QXR0cmlidXRlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlKj4oJkRPTUpJVFNp
Z25hdHVyZUZvclRlc3RET01KSVRHZXRBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJpdGVtIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01KSVRGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbl9pdGVtKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlKj4oJkRPTUpJVFNp
Z25hdHVyZUZvclRlc3RET01KSVRJdGVtKSB9IH0sCisgICAgeyAiaGFzQXR0cmlidXRlIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01KSVRGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbl9oYXNBdHRyaWJ1dGUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigm
RE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEhhc0F0dHJpYnV0ZSkgfSB9LAorICAgIHsgImdl
dEVsZW1lbnRCeUlkIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24gfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01KSVRGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbl9nZXRFbGVtZW50QnlJZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpE
T01KSVQ6OlNpZ25hdHVyZSo+KCZET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0RWxlbWVu
dEJ5SWQpIH0gfSwKKyAgICB7ICJnZXRFbGVtZW50c0J5TmFtZSIsIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklURnVuY3Rpb24s
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25fZ2V0RWxlbWVudHNCeU5hbWUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigmRE9NSklUU2ln
bmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1lbnRzQnlOYW1lKSB9IH0sCiB9OwogCi1jb25zdCBD
bGFzc0luZm8gSlNUZXN0RE9NSklUUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RE9NSklUIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RET01KSVRQcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdERPTUpJ
VFByb3RvdHlwZVRhYmxlID0geyA0MSwgMTI3LCB0cnVlLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
SlNUZXN0RE9NSklUUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdERPTUpJVFByb3RvdHlwZVRh
YmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RET01KSVRQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3RET01KSVQiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RE9NSklUUHJvdG90eXBl
VGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RE9NSklUUHJvdG90eXBl
KSB9OwogCiB2b2lkIEpTVGVzdERPTUpJVFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlZmF1bHRUb0pTT04uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkocmV2aXNpb24gMjc5NTAz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT04uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsMTEgKzEzOCwxNCBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlLCBK
U1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0RGVmYXVs
dFRvSlNPTkRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0RGVmYXVsdFRvSlNPTj47CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0
RGVmYXVsdFRvSlNPTkRPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNP
TkRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTiIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVs
dFRvSlNPTkRPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVm
YXVsdFRvSlNPTkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNTgsNTggKzE2
MSwxMzQgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05ET01DbwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworc3RhdGljIEpTVmFs
dWUgY3JlYXRlSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZV9sb25nQXR0cmlidXRlKFZNJiB2
bSwgSlNPYmplY3QqKQoreworICAgIHJldHVybiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwganNUZXN0RGVmYXVsdFRvSlNPTl9sb25nQXR0cmlidXRlLCBudWxscHRyLCBET01B
dHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNUZXN0RGVmYXVsdFRvSlNPTjo6aW5mbygpLCBudWxscHRy
IH0pOworfQorCitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90
eXBlX2xvbmdBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0UnVudGltZUVuYWJsZWRFbmFibGVkKCk7Cit9CisK
K3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5cGVfZW5hYmxl
ZEJ5U2V0dGluZ3NBdHRyaWJ1dGUoVk0mIHZtLCBKU09iamVjdCopCit7CisgICAgcmV0dXJuIERP
TUF0dHJpYnV0ZUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3REZWZhdWx0VG9KU09OX2Vu
YWJsZWRCeVNldHRpbmdzQXR0cmlidXRlLCBudWxscHRyLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9u
IHsgSlNUZXN0RGVmYXVsdFRvSlNPTjo6aW5mbygpLCBudWxscHRyIH0pOworfQorCitzdGF0aWMg
Ym9vbCBpc0VuYWJsZWRKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlX2VuYWJsZWRCeVNldHRp
bmdzQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1
ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQ7Cit9CisKKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlw
ZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0RGVmYXVs
dFRvSlNPTlByb3RvdHlwZVRhYmxlSW5kZXhbNjZdID0geworICAgIHsgMTYsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDE3LCAtMSB9LAorICAgIHsgNiwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAxMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE0LCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyA0LCAtMSB9LAorICAgIHsgMiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyA3LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IDAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyA4LCAtMSB9LAorICAgIHsgNSwgLTEgfSwKKyAgICB7IDMsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTMsIDY1IH0sCisgICAgeyAxMiwgNjQgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDEwLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDksIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE1LCAtMSB9LAorICAgIHsgMTgs
IC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3REZWZhdWx0
VG9KU09OUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJsb25n
QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRU
b0pTT05fbG9uZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJlbmFibGVkQnlTZXR0aW5nc0F0dHJp
YnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09O
X2VuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgImxvbmdBdHRyaWJ1dGUi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxs
YmFjaywgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNh
bGxiYWNrPihjcmVhdGVKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlX2xvbmdBdHRyaWJ1dGUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihp
c0VuYWJsZWRKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlX2xvbmdBdHRyaWJ1dGUpIH0gfSwK
KyAgICB7ICJlbmFibGVkQnlTZXR0aW5nc0F0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdERl
ZmF1bHRUb0pTT05Qcm90b3R5cGVfZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRK
U1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlX2VuYWJsZWRCeVNldHRpbmdzQXR0cmlidXRlKSB9
IH0sCiAjaWYgRU5BQkxFKFRFU1RfQ09ORElUSU9OQUwpCi0gICAgeyAiZW5hYmxlZEJ5Q29uZGl0
aW9uYWxBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVm
YXVsdFRvSlNPTl9lbmFibGVkQnlDb25kaXRpb25hbEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJl
bmFibGVkQnlDb25kaXRpb25hbEF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNP
Tl9lbmFibGVkQnlDb25kaXRpb25hbEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKICNlbHNlCiAgICAg
eyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgotICAgIHsgImV2ZW50SGFu
ZGxlckF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTl9ldmVudEhhbmRsZXJBdHRyaWJ1dGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3REZWZhdWx0VG9KU09OX2V2ZW50SGFuZGxlckF0dHJpYnV0ZSkgfSB9LAotICAgIHsgImZp
cnN0U3RyaW5nQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09OX2ZpcnN0U3RyaW5nQXR0cmlidXRl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0RGVmYXVsdFRvSlNPTl9maXJzdFN0cmluZ0F0dHJpYnV0ZSkgfSB9LAotICAgIHsg
InNlY29uZExvbmdBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fc2Vjb25kTG9uZ0F0dHJpYnV0
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdERlZmF1bHRUb0pTT05fc2Vjb25kTG9uZ0F0dHJpYnV0ZSkgfSB9LAotICAgIHsg
InRoaXJkVW5KU09OYWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTl90aGlyZFVuSlNPTmFi
bGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9KU09OX3RoaXJkVW5KU09OYWJsZUF0dHJpYnV0
ZSkgfSB9LAotICAgIHsgImZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVm
YXVsdFRvSlNPTl9mb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZh
dWx0VG9KU09OX2ZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZSkgfSB9LAotICAgIHsg
ImZpZnRoTG9uZ0NsYW1wZWRBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fZmlmdGhMb25nQ2xh
bXBlZEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05fZmlmdGhMb25nQ2xhbXBlZEF0dHJp
YnV0ZSkgfSB9LAotICAgIHsgInNpeHRoVHlwZWRlZkF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNP
Tl9zaXh0aFR5cGVkZWZBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9KU09OX3NpeHRoVHlwZWRl
ZkF0dHJpYnV0ZSkgfSB9LAotICAgIHsgInNldmVudGhEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1
dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdERlZmF1bHRUb0pTT05fc2V2ZW50aERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdERlZmF1bHRUb0pTT05fc2V2ZW50aERpcmVjdGx5VG9KU09OYWJsZUF0dHJpYnV0ZSkg
fSB9LAotICAgIHsgImVpZ2h0aEluZGlyZWN0bHlBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05f
ZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05fZWlnaHRoSW5k
aXJlY3RseUF0dHJpYnV0ZSkgfSB9LAotICAgIHsgIm5pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNP
TmFibGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fbmludGhPcHRpb25hbERpcmVjdGx5VG9K
U09OYWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05fbmludGhPcHRpb25hbERpcmVj
dGx5VG9KU09OYWJsZUF0dHJpYnV0ZSkgfSB9LAotICAgIHsgInRlbnRoRnJvemVuQXJyYXlBdHRy
aWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fdGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dERlZmF1bHRUb0pTT05fdGVudGhGcm96ZW5BcnJheUF0dHJpYnV0ZSkgfSB9LAotICAgIHsgImVs
ZXZlbnRoU2VxdWVuY2VBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fZWxldmVudGhTZXF1ZW5j
ZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05fZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0
ZSkgfSB9LAotICAgIHsgInR3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVm
YXVsdFRvSlNPTl90d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZh
dWx0VG9KU09OX3R3ZWxmdGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSkgfSB9LAotICAgIHsg
InRoaXJ0ZWVudGhSZWNvcmRBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fdGhpcnRlZW50aFJl
Y29yZEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05fdGhpcnRlZW50aFJlY29yZEF0dHJp
YnV0ZSkgfSB9LAorICAgIHsgImV2ZW50SGFuZGxlckF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fZXZlbnRIYW5kbGVyQXR0cmlidXRl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0RGVmYXVsdFRvSlNPTl9ldmVudEhhbmRsZXJBdHRyaWJ1dGUpIH0gfSwKKyAgICB7
ICJmaXJzdFN0cmluZ0F0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdERlZmF1bHRUb0pTT05fZmlyc3RTdHJpbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9K
U09OX2ZpcnN0U3RyaW5nQXR0cmlidXRlKSB9IH0sCisgICAgeyAic2Vjb25kTG9uZ0F0dHJpYnV0
ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fc2Vj
b25kTG9uZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05fc2Vjb25kTG9uZ0F0dHJpYnV0
ZSkgfSB9LAorICAgIHsgInRoaXJkVW5KU09OYWJsZUF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fdGhpcmRVbkpTT05hYmxlQXR0cmli
dXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0RGVmYXVsdFRvSlNPTl90aGlyZFVuSlNPTmFibGVBdHRyaWJ1dGUpIH0gfSwK
KyAgICB7ICJmb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09OX2ZvdXJ0aFVucmVzdHJpY3RlZERv
dWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05fZm91cnRoVW5yZXN0cmljdGVkRG91
YmxlQXR0cmlidXRlKSB9IH0sCisgICAgeyAiZmlmdGhMb25nQ2xhbXBlZEF0dHJpYnV0ZSIsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fZmlmdGhMb25n
Q2xhbXBlZEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05fZmlmdGhMb25nQ2xhbXBlZEF0
dHJpYnV0ZSkgfSB9LAorICAgIHsgInNpeHRoVHlwZWRlZkF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fc2l4dGhUeXBlZGVmQXR0cmli
dXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0RGVmYXVsdFRvSlNPTl9zaXh0aFR5cGVkZWZBdHRyaWJ1dGUpIH0gfSwKKyAg
ICB7ICJzZXZlbnRoRGlyZWN0bHlUb0pTT05hYmxlQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTl9zZXZlbnRoRGlyZWN0bHlUb0pTT05h
YmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVmYXVsdFRvSlNPTl9zZXZlbnRoRGlyZWN0bHlUb0pTT05h
YmxlQXR0cmlidXRlKSB9IH0sCisgICAgeyAiZWlnaHRoSW5kaXJlY3RseUF0dHJpYnV0ZSIsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fZWlnaHRoSW5k
aXJlY3RseUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05fZWlnaHRoSW5kaXJlY3RseUF0
dHJpYnV0ZSkgfSB9LAorICAgIHsgIm5pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNPTmFibGVBdHRy
aWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09O
X25pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0
VG9KU09OX25pbnRoT3B0aW9uYWxEaXJlY3RseVRvSlNPTmFibGVBdHRyaWJ1dGUpIH0gfSwKKyAg
ICB7ICJ0ZW50aEZyb3plbkFycmF5QXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTl90ZW50aEZyb3plbkFycmF5QXR0cmlidXRlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0RGVmYXVsdFRvSlNPTl90ZW50aEZyb3plbkFycmF5QXR0cmlidXRlKSB9IH0sCisgICAgeyAi
ZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdERlZmF1bHRUb0pTT05fZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERl
ZmF1bHRUb0pTT05fZWxldmVudGhTZXF1ZW5jZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgInR3ZWxm
dGhJbnRlcmZhY2VTZXF1ZW5jZUF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdERlZmF1bHRUb0pTT05fdHdlbGZ0aEludGVyZmFjZVNlcXVlbmNlQXR0cmlidXRl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0RGVmYXVsdFRvSlNPTl90d2VsZnRoSW50ZXJmYWNlU2VxdWVuY2VBdHRyaWJ1dGUp
IH0gfSwKKyAgICB7ICJ0aGlydGVlbnRoUmVjb3JkQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTl90aGlydGVlbnRoUmVjb3JkQXR0cmli
dXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0RGVmYXVsdFRvSlNPTl90aGlydGVlbnRoUmVjb3JkQXR0cmlidXRlKSB9IH0s
CiAgICAgeyAidG9KU09OIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlRnVuY3Rpb25fdG9K
U09OKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERl
ZmF1bHRUb0pTT05Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09OIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RE
ZWZhdWx0VG9KU09OUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RE
ZWZhdWx0VG9KU09OUHJvdG90eXBlVGFibGUgPSB7IDE5LCA2MywgdHJ1ZSwgSlNUZXN0RGVmYXVs
dFRvSlNPTjo6aW5mbygpLCBKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlVGFibGVWYWx1ZXMs
IEpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERlZmF1bHRU
b0pTT04iLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZVRhYmxl
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5
cGUpIH07CiAKIHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdERlZmF1bHRUb0pTT046OmluZm8oKSwgSlNUZXN0RGVm
YXVsdFRvSlNPTlByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgYm9vbCBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gZmFsc2U7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RSdW50aW1lRW5hYmxlZEVuYWJsZWQoKSkgewot
ICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oImxvbmdBdHRyaWJ1dGUiKSwgc3RybGVuKCJsb25nQXR0cmlidXRl
IikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgfQotICAgIGlmICghanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7Ci0gICAgICAg
IGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ3NBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVk
QnlTZXR0aW5nc0F0dHJpYnV0ZSIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwot
ICAgIH0KLSAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUo
KS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsK
ICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZC5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSwxMSArODksMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhh
c1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlLCBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGU6OkJhc2UpOwogCiB1c2lu
ZyBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRET01Db25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZD47CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkRE9NQ29uc3RydWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQpAQCAtMTA5LDQwICsxMTIsNjYgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRU
b0pTT05GaWx0ZQogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLworc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkUHJvdG90eXBlX2ZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlKFZNJiB2bSwg
SlNPYmplY3QqKQoreworICAgIHJldHVybiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkX2ZpbHRlcmVkQnlFeHBv
c2VkV2luZG93QXR0cmlidXRlLCBudWxscHRyLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjppbmZvKCksIG51bGxwdHIgfSk7Cit9
CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZFByb3RvdHlwZV9maWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwor
ICAgIHJldHVybiBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKTsKK30KKworc3RhdGljIEpTVmFsdWUg
Y3JlYXRlSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlX2ZpbHRl
cmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlKFZNJiB2bSwgSlNPYmplY3QqKQoreworICAgIHJl
dHVybiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkX2ZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlLCBu
dWxscHRyLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkOjppbmZvKCksIG51bGxwdHIgfSk7Cit9CisKK3N0YXRpYyBib29sIGlzRW5h
YmxlZEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZV9maWx0ZXJl
ZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzV29ya2VyR2xvYmFsU2NvcGUoKTsKK30KKworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBl
ICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVUYWJsZUluZGV4WzE2XSA9IHsKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgMiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDQsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorICAgIHsgMywg
LTEgfSwKKyAgICB7IDEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlw
ZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJu
b3JtYWxBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkX25vcm1hbEF0dHJpYnV0ZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7
ICJmaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRfZmlsdGVyZWRC
eUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiZmlsdGVyZWRCeUV4cG9zZWRX
b3JrZXJBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkX2ZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmli
dXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAorICAgIHsgIm5vcm1hbEF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkX25vcm1hbEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAg
ICB7ICJmaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZV9maWx0ZXJlZEJ5RXhwb3Nl
ZFdpbmRvd0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlF
bmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZFByb3RvdHlwZV9maWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZSkgfSB9LAorICAg
IHsgImZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlX2ZpbHRlcmVkQnlFeHBvc2Vk
V29ya2VyQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVu
YWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkUHJvdG90eXBlX2ZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlKSB9IH0sCiAgICAg
eyAidG9KU09OIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVG
dW5jdGlvbl90b0pTT04pLCAoaW50cHRyX3QpICgwKSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0lu
Zm8gSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZVRhYmxlID0geyA1LCAx
NSwgdHJ1ZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjppbmZvKCksIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZVRhYmxlVmFsdWVzLCBK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVUYWJsZUluZGV4IH07
Citjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3Rv
dHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVz
KHZtLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmluZm8oKSwgSlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlz
KTsKLSAgICBib29sIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSBmYWxzZTsKLSAgICBp
ZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJmaWx0
ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZSIpLCBzdHJsZW4oImZpbHRlcmVkQnlFeHBvc2Vk
V2luZG93QXR0cmlidXRlIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0g
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAg
fQotICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewotICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlIiksIHN0cmxlbigi
ZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKLSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKLSAgICB9Ci0gICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
JiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQotICAgICAgICBmbGF0dGVuRGljdGlvbmFy
eU9iamVjdCh2bSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTEgKzc2LDE0IEBAIHByaXZhdGU6
CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlUHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZVBy
b3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT47CiAKK3RlbXBsYXRlPD4gY29u
c3QgdW5zaWduZWQgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VET01Db25z
dHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNl
RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VET01Db25zdHJ1Y3Rv
cikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTk1LDE0ICs5OCwy
MSBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyCiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKIH0KIAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZv
ciBQcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpT
VGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlVGFibGVJbmRleFsy
XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKK307CisKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNl
UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGUpIH07
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlUHJvdG90eXBlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlOjppbmZvKCksIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVj
dEluaGVyaXRhbmNlUHJvdG90eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJU
ZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UiLCAmQmFzZTo6c19pbmZvLCAmSlNU
ZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGVUYWJsZSwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZVByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTEgKzEwMywxNCBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFBy
b3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGU6OkJhc2UpOwogCiB1
c2luZyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdERPTUNvbnN0cnVjdG9yID0gSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ+OwogCit0
ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RE9NQ29u
c3RydWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdERPTUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0x
MjIsMTYgKzEyNSwyOSBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBI
YXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBlVGFibGVJbmRleFs4
XSA9IHsKKyAgICB7IDIsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQog
ewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgImluaGVyaXRMb25nQXR0cmlidXRlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdF9pbmhlcml0TG9uZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0X2luaGVyaXRMb25nQXR0cmlidXRlKSB9IH0sCisgICAgeyAiaW5oZXJpdExvbmdB
dHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdF9pbmhlcml0TG9uZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0X2luaGVyaXRMb25nQXR0cmlidXRlKSB9IH0sCiAgICAgeyAidG9KU09OIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uX3RvSlNPTiksIChpbnRwdHJfdCkgKDAp
IH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFBy
b3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0IiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdFByb3RvdHlwZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGVUYWJsZSA9IHsgMywgNywgdHJ1ZSwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQ6OmluZm8oKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQ
cm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGVU
YWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09OSW5oZXJpdCIsICZCYXNlOjpz
X2luZm8sICZKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZVRhYmxlLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBl
KSB9OwogCiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWwuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSwxMSArMTA1LDE0IEBAIHByaXZhdGU6CiAgICAg
fQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5
cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGU6OkJhc2UpOwogCiB1
c2luZyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRE9NQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsPjsKIAordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdEZpbmFsRE9NQ29uc3RydWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdEZpbmFsRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdEZpbmFsIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRE9NQ29uc3RydWN0b3IpIH07
CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEyNCwxNyArMTI3LDMxIEBAIHRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXIKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0v
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlw
ZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZVRhYmxlSW5kZXhbOV0gPSB7CisgICAgeyAxLCA4
IH0sCisgICAgeyAwLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgMiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAzLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdEZpbmFsQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiZmluYWxMb25nQXR0cmlidXRlRm9v
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsX2ZpbmFsTG9uZ0F0dHJpYnV0ZUZvbyksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxfZmluYWxMb25nQXR0cmlidXRlRm9vKSB9IH0s
Ci0gICAgeyAiZmluYWxMb25nQXR0cmlidXRlQmFyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsX2ZpbmFsTG9uZ0F0dHJpYnV0ZUJhciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWxfZmluYWxMb25nQXR0cmlidXRlQmFyKSB9IH0sCisgICAgeyAiZmluYWxMb25nQXR0cmlidXRl
Rm9vIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXRGaW5hbF9maW5hbExvbmdBdHRyaWJ1dGVGb28pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdEZpbmFsX2ZpbmFsTG9uZ0F0dHJpYnV0ZUZvbykgfSB9LAorICAgIHsgImZpbmFsTG9uZ0F0
dHJpYnV0ZUJhciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWxfZmluYWxMb25nQXR0cmlidXRlQmFyKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbF9maW5hbExvbmdBdHRyaWJ1dGVCYXIpIH0gfSwKICAgICB7ICJ0b0pT
T04iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlvbl90b0pT
T04pLCAoaW50cHRyX3QpICgwKSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWwiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUp
IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWxQcm90b3R5cGVUYWJsZSA9IHsgNCwgNywgdHJ1ZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbDo6aW5mbygpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBl
VGFibGVWYWx1ZXMsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGVUYWJs
ZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZVRh
YmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWxQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
LmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NCwxMSArODQsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlw
ZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6QmFz
ZSk7CiAKIHVzaW5nIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVET01D
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2ln
bmVkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rv
cjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVET01D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rv
cikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTA0LDE5ICsx
MDcsNDIgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeQogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJs
ZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlVGFibGVJ
bmRleFsxOF0gPSB7CisgICAgeyA1LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgNCwgLTEgfSwKKyAgICB7IDEsIDE2IH0sCisgICAgeyAw
LCAxNyB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMiwgLTEgfSwKKyAgICB7IDMsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7
ICJwcm9wZXJ0eTEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVk
QXR0cmlidXRlMSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hh
cmVkQXR0cmlidXRlMSkgfSB9LAotICAgIHsgInByb3BlcnR5MiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSB9IH0sCi0gICAgeyAicHJv
cGVydHkzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJp
YnV0ZTEpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0
dHJpYnV0ZTEpIH0gfSwKLSAgICB7ICJwcm9wZXJ0eTQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMikgfSB9LAotICAgIHsgInByb3BlcnR5
NSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUy
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1
dGUyKSB9IH0sCisgICAgeyAicHJvcGVydHkxIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1
dGUxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRy
aWJ1dGUxKSB9IH0sCisgICAgeyAicHJvcGVydHkyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRy
aWJ1dGUxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRB
dHRyaWJ1dGUxKSB9IH0sCisgICAgeyAicHJvcGVydHkzIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUs
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRB
dHRyaWJ1dGUxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFy
ZWRBdHRyaWJ1dGUxKSB9IH0sCisgICAgeyAicHJvcGVydHk0IiwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFy
ZWRBdHRyaWJ1dGUyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9z
aGFyZWRBdHRyaWJ1dGUyKSB9IH0sCisgICAgeyAicHJvcGVydHk1IiwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9z
aGFyZWRBdHRyaWJ1dGUyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZV9zaGFyZWRBdHRyaWJ1dGUyKSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGVUYWJsZSA9IHsg
NiwgMTUsIHRydWUsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6Omlu
Zm8oKSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZVRh
YmxlVmFsdWVzLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90
eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90
eXBlKSB9OwogCiB2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERv
bWFpblNlY3VyaXR5LmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTQsMjUgKzk0LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0
aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlLCBKU1Rlc3REb21haW5TZWN1cml0eVByb3Rv
dHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdERvbWFpblNlY3VyaXR5RE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REb21haW5TZWN1cml0eT47
CiAKLS8qIEhhc2ggdGFibGUgKi8KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaElu
ZGV4IEpTVGVzdERvbWFpblNlY3VyaXR5VGFibGVJbmRleFsyXSA9IHsKLSAgICB7IDAsIC0xIH0s
Ci0gICAgeyAtMSwgLTEgfSwKLX07Ci0KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdERvbWFpblNlY3VyaXR5VGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiZXhjaXRpbmdBdHRy
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERvbWFpblNlY3VyaXR5X2V4
Y2l0aW5nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0RG9t
YWluU2VjdXJpdHlUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0RG9tYWluU2VjdXJpdHk6Omlu
Zm8oKSwgSlNUZXN0RG9tYWluU2VjdXJpdHlUYWJsZVZhbHVlcywgSlNUZXN0RG9tYWluU2VjdXJp
dHlUYWJsZUluZGV4IH07Cit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdERvbWFpblNl
Y3VyaXR5RE9NQ29uc3RydWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REb21haW5TZWN1cml0eURPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RG9tYWluU2VjdXJpdHkiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERvbWFpblNlY3Vy
aXR5RE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REb21haW5T
ZWN1cml0eURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xMjgsNyArMTE3LDIx
IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3REb21haW5TZWN1cml0eURPTUMKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogfQogCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9y
IFByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNU
ZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGVUYWJsZUluZGV4WzEwXSA9IHsKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMCwgOCB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAyLCA5IH0sCisgICAgeyAzLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KIHsKQEAgLTEzOCw3ICsxNDEsOCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0RG9tYWluCiAgICAgeyAib3ZlcmxvYWRlZE1ldGhvZCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0RG9tYWluU2VjdXJp
dHlQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9
LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0RG9tYWluU2VjdXJpdHkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBl
KSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlw
ZVRhYmxlID0geyA0LCA3LCB0cnVlLCBKU1Rlc3REb21haW5TZWN1cml0eTo6aW5mbygpLCBKU1Rl
c3REb21haW5TZWN1cml0eVByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3REb21haW5TZWN1cml0
eVByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REb21haW5TZWN1
cml0eVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERvbWFpblNlY3VyaXR5IiwgJkJhc2U6OnNf
aW5mbywgJkpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGUpIH07CiAKIHZvaWQg
SlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
QEAgLTE0Nyw3ICsxNTEsMjEgQEAgdm9pZCBKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZTo6
ZmluaQogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCi1j
b25zdCBDbGFzc0luZm8gSlNUZXN0RG9tYWluU2VjdXJpdHk6OnNfaW5mbyA9IHsgIlRlc3REb21h
aW5TZWN1cml0eSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3REb21haW5TZWN1cml0eVRhYmxlLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5KSB9OworLyog
SGFzaCB0YWJsZSBmb3IgSW5zdGFuY2UgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVGVzdERvbWFpblNlY3VyaXR5SW5zdGFuY2VUYWJsZUluZGV4WzJdID0gewor
ICAgIHsgMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorfTsKKworCitzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0RG9tYWluU2VjdXJpdHlJbnN0YW5jZVRhYmxlVmFsdWVzW10gPQor
eworICAgIHsgImV4Y2l0aW5nQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RG9tYWluU2VjdXJpdHlfZXhj
aXRpbmdBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4obnVsbHB0cikgfSB9LAorfTsKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rl
c3REb21haW5TZWN1cml0eUluc3RhbmNlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTVGVzdERvbWFp
blNlY3VyaXR5OjppbmZvKCksIEpTVGVzdERvbWFpblNlY3VyaXR5SW5zdGFuY2VUYWJsZVZhbHVl
cywgSlNUZXN0RG9tYWluU2VjdXJpdHlJbnN0YW5jZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNz
SW5mbyBKU1Rlc3REb21haW5TZWN1cml0eTo6c19pbmZvID0geyAiVGVzdERvbWFpblNlY3VyaXR5
IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdERvbWFpblNlY3VyaXR5SW5zdGFuY2VUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REb21haW5TZWN1cml0eSkgfTsKIAogSlNU
ZXN0RG9tYWluU2VjdXJpdHk6OkpTVGVzdERvbWFpblNlY3VyaXR5KFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERvbWFpblNlY3Vy
aXR5PiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXI8VGVzdERvbWFpblNlY3VyaXR5PihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA2LDM1ICsxMDYsNDIgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSwgSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZ1Byb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdE
T01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEVu
YWJsZWRCeVNldHRpbmc+OwogCi0vKiBIYXNoIHRhYmxlICovCitzdGF0aWMgSlNWYWx1ZSBjcmVh
dGVKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JfZW5hYmxlZEJ5U2V0dGluZ0NvbnN0
YW50KFZNJiwgSlNPYmplY3QqKQoreworICAgIHJldHVybiBqc051bWJlcigwKTsKK30KIAotc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEVuYWJsZWRCeVNldHRpbmdU
YWJsZUluZGV4WzJdID0gewotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLX07Citz
dGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JfZW5h
YmxlZEJ5U2V0dGluZ0NvbnN0YW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0
dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQ7Cit9CiAKKy8qIEhhc2ggdGFibGUgZm9y
IENvbnN0cnVjdG9yICovCiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAwLCAwLCBOb0ludHJpbnNpYywg
eyAwLCAwIH0gfQorc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEVu
YWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvclRhYmxlSW5kZXhbMl0gPSB7CisgICAgeyAwLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEVu
YWJsZWRCeVNldHRpbmdUYWJsZSA9IHsgMCwgMSwgZmFsc2UsIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmc6OmluZm8oKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1RhYmxlVmFsdWVzLCBKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nVGFibGVJbmRleCB9OwotLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3Ig
Ki8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdD
b25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImVuYWJsZWRCeVNldHRpbmdDb25z
dGFudCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50
ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMCkgfSB9LAorICAgIHsgImVuYWJsZWRC
eVNldHRpbmdDb25zdGFudCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxM
YXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVj
dG9yX2VuYWJsZWRCeVNldHRpbmdDb25zdGFudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNM
YXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdEVuYWJsZWRCeVNldHRp
bmdDb25zdHJ1Y3Rvcl9lbmFibGVkQnlTZXR0aW5nQ29uc3RhbnQpIH0gfSwKIH07CiAKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yVGFibGUg
PSB7IDEsIDEsIHRydWUsIG51bGxwdHIsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JUYWJsZUluZGV4
IH07CiBzdGF0aWNfYXNzZXJ0KFRlc3RFbmFibGVkQnlTZXR0aW5nOjplbmFibGVkQnlTZXR0aW5n
Q29uc3RhbnQgPT0gMCwgImVuYWJsZWRCeVNldHRpbmdDb25zdGFudCBpbiBUZXN0RW5hYmxlZEJ5
U2V0dGluZyBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwogCi10ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RFbmFibGVkQnlTZXR0aW5nIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3Ry
dWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmdET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdEVuYWJsZWRCeVNldHRpbmdET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEVu
YWJsZWRCeVNldHRpbmciLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0Nv
bnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZ0RPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CkBAIC0x
NDcsOTMgKzE1NCwxNjYgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdE
TwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RFbmFi
bGVkQnlTZXR0aW5nIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmluZm8oKSwgSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBpZiAo
IWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKSB7Ci0gICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQ29uc3RhbnQiKSwgc3Ry
bGVuKCJlbmFibGVkQnlTZXR0aW5nQ29uc3RhbnQiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKLSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwotICAgIH0KKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIG51bGxwdHIsIEpT
VGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7Cit9CisK
KyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ1Byb3RvdHlwZV9lbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKFZNJiB2bSwg
SlNPYmplY3QqKQoreworICAgIHJldHVybiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ19lbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlLCBz
ZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nX2VuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUsIERPTUF0
dHJpYnV0ZUFubm90YXRpb24geyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjppbmZvKCksIG51bGxw
dHIgfSk7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQ
cm90b3R5cGVfZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkOworfQorI2VuZGlm
CisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZV9lbmFibGVkQnlUd29TZXR0aW5nc0F0dHJpYnV0ZShW
TSYgdm0sIEpTT2JqZWN0KikKK3sKKyAgICByZXR1cm4gRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdfZW5hYmxlZEJ5VHdvU2V0dGluZ3NB
dHRyaWJ1dGUsIHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdfZW5hYmxlZEJ5VHdvU2V0dGluZ3NB
dHRyaWJ1dGUsIERPTUF0dHJpYnV0ZUFubm90YXRpb24geyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
OjppbmZvKCksIG51bGxwdHIgfSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
Lworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZV9l
bmFibGVkQnlUd29TZXR0aW5nc0F0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiAoanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCAmJiBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
dHRpbmdzVmFsdWVzKCkub3RoZXJUZXN0U2V0dGluZ0VuYWJsZWQpOworfQorI2VuZGlmCisKK3N0
YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVfc3VwcGxl
bWVudGFsQXR0cmlidXRlKFZNJiB2bSwgSlNPYmplY3QqKQoreworICAgIHJldHVybiBET01BdHRy
aWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ19zdXBw
bGVtZW50YWxBdHRyaWJ1dGUsIHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdfc3VwcGxlbWVudGFs
QXR0cmlidXRlLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zzo6aW5mbygpLCBudWxscHRyIH0pOworfQorCitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nUHJvdG90eXBlX3N1cHBsZW1lbnRhbEF0dHJpYnV0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwor
ICAgIHJldHVybiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRnJvbVBh
cnRpYWxJbnRlcmZhY2VBdHRyaWJ1dGVFbmFibGVkICYmIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1
ZXMoKS50ZXN0U2V0dGluZ0Zyb21QYXJ0aWFsSW50ZXJmYWNlRW5hYmxlZCk7Cit9CisKKyNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZ1Byb3RvdHlwZV9lbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKFZNJiB2bSwgSlNPYmpl
Y3QqIHRoaXNPYmplY3QpCit7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIDEsICJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIl9z
LCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25fZW5hYmxlZEJ5U2V0dGlu
Z09wZXJhdGlvbik7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmdQcm90b3R5cGVfZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJl
dHVybiBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkOworfQor
I2VuZGlmCisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90
b3R5cGVfZW5hYmxlZEJ5U2V0dGluZ0NvbnN0YW50KFZNJiwgSlNPYmplY3QqKQoreworICAgIHJl
dHVybiBqc051bWJlcigwKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZ1Byb3RvdHlwZV9lbmFibGVkQnlTZXR0aW5nQ29uc3RhbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAg
ICByZXR1cm4ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZDsK
K30KKworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1
Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlVGFibGVJ
bmRleFsxN10gPSB7CisgICAgeyAzLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDEsIDE2IH0sCisgICAgeyA1LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyA0LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAyLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0cnVj
dG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICB7ICJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RFbmFibGVkQnlTZXR0aW5nX2VuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nX2VuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJl
bmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNy
ZWF0ZUpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVfZW5hYmxlZEJ5U2V0dGluZ0F0dHJp
YnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJh
Y2s+KGlzRW5hYmxlZEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVfZW5hYmxlZEJ5U2V0
dGluZ0F0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAs
IDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICB7ICJlbmFibGVk
QnlUd29TZXR0aW5nc0F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RW5hYmxlZEJ5U2V0dGluZ19lbmFibGVkQnlUd29T
ZXR0aW5nc0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdfZW5hYmxlZEJ5VHdvU2V0
dGluZ3NBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJlbmFibGVkQnlUd29TZXR0aW5nc0F0dHJpYnV0
ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjaywgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nUHJvdG90eXBlX2VuYWJsZWRCeVR3b1NldHRpbmdzQXR0cmlidXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZV9lbmFibGVkQnlUd29TZXR0aW5nc0F0dHJpYnV0ZSkg
fSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlm
Ci0gICAgeyAic3VwcGxlbWVudGFsQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RFbmFibGVkQnlTZXR0aW5nX3N1cHBs
ZW1lbnRhbEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdfc3VwcGxlbWVudGFsQXR0
cmlidXRlKSB9IH0sCisgICAgeyAic3VwcGxlbWVudGFsQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9w
ZXJ0eUNhbGxiYWNrLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVBy
b3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVfc3Vw
cGxlbWVudGFsQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0
eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlw
ZV9zdXBwbGVtZW50YWxBdHRyaWJ1dGUpIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQot
ICAgIHsgImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQ
cm90b3R5cGVGdW5jdGlvbl9lbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKSwgKGludHB0cl90KSAo
MSkgfSB9LAorICAgIHsgImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjayksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3Jl
YXRlSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZV9lbmFibGVkQnlTZXR0aW5nT3BlcmF0
aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFj
az4oaXNFbmFibGVkSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZV9lbmFibGVkQnlTZXR0
aW5nT3BlcmF0aW9uKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwg
MCB9IH0sCiAjZW5kaWYKLSAgICB7ICJlbmFibGVkQnlTZXR0aW5nQ29uc3RhbnQiLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmlu
c2ljLCB7IChsb25nIGxvbmcpKDApIH0gfSwKKyAgICB7ICJlbmFibGVkQnlTZXR0aW5nQ29uc3Rh
bnQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxi
YWNrLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2Fs
bGJhY2s+KGNyZWF0ZUpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVfZW5hYmxlZEJ5U2V0
dGluZ0NvbnN0YW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJs
ZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZV9lbmFi
bGVkQnlTZXR0aW5nQ29uc3RhbnQpIH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RW5hYmxlZEJ5U2V0dGlu
ZyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZVRhYmxlID0geyA2LCAxNSwgdHJ1ZSwg
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6aW5mbygpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJv
dG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVUYWJsZUlu
ZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6
c19pbmZvID0geyAiVGVzdEVuYWJsZWRCeVNldHRpbmciLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpT
VGVzdEVuYWJsZWRCeVNldHRpbmc6OmluZm8oKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3Rv
dHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gZmFsc2U7Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoIWpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewotICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKSwgc3RybGVuKCJlbmFibGVkQnlT
ZXR0aW5nT3BlcmF0aW9uIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0g
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAg
fQotI2VuZGlmCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoIWpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxlZCkgewotICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5n
QXR0cmlidXRlIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgfQotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0
dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQgJiYganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdz
VmFsdWVzKCkub3RoZXJUZXN0U2V0dGluZ0VuYWJsZWQpKSB7Ci0gICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
ZW5hYmxlZEJ5VHdvU2V0dGluZ3NBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVkQnlUd29TZXR0
aW5nc0F0dHJpYnV0ZSIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0K
LSNlbmRpZgotICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0
aW5nRnJvbVBhcnRpYWxJbnRlcmZhY2VBdHRyaWJ1dGVFbmFibGVkICYmIGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRnJvbVBhcnRpYWxJbnRlcmZhY2VFbmFibGVkKSkg
ewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oInN1cHBsZW1lbnRhbEF0dHJpYnV0ZSIpLCBzdHJsZW4oInN1
cHBsZW1lbnRhbEF0dHJpYnV0ZSIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwot
ICAgIH0KLSAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5n
RW5hYmxlZCkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
LSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdDb25zdGFudCIp
LCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdDb25zdGFudCIpKTsKLSAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwotICAgIH0KLSAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgIGZsYXR0ZW5EaWN0aW9u
YXJ5T2JqZWN0KHZtKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04o
KTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnNfaW5mbyA9
IHsgIlRlc3RFbmFibGVkQnlTZXR0aW5nIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEVuYWJsZWRC
eVNldHRpbmdUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nKSB9Oworc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Z0luc3RhbmNlX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nKFZNJiB2bSwgSlNPYmplY3QqKQor
eworICAgIHJldHVybiBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxl
ZEJ5U2V0dGluZ19UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yLCBudWxscHRy
KTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0luc3Rh
bmNlX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQ7Cit9CisKK3N0YXRpYyBK
U1ZhbHVlIGNyZWF0ZUpTVGVzdEVuYWJsZWRCeVNldHRpbmdJbnN0YW5jZV9UZXN0U3ViT2JqRW5h
YmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWMoVk0mIHZtLCBKU09iamVjdCopCit7CisgICAgcmV0
dXJuIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5n
X1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVB1YmxpY0NvbnN0cnVjdG9yLCBudWxs
cHRyKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0lu
c3RhbmNlX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVB1YmxpYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwor
ICAgIHJldHVybiBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVk
OworfQorCisvKiBIYXNoIHRhYmxlIGZvciBJbnN0YW5jZSAqLworCitzdGF0aWMgY29uc3Qgc3Ry
dWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0luc3RhbmNlVGFibGVJ
bmRleFs1XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCA0
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCit9OworCisKK3N0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nSW5zdGFuY2VUYWJsZVZhbHVl
c1tdID0KK3sKKyAgICB7ICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlD
YWxsYmFjaywgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0
eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RFbmFibGVkQnlTZXR0aW5nSW5zdGFuY2VfVGVzdFN1Yk9i
akVuYWJsZWRCeVNldHRpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5
RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nSW5zdGFuY2Vf
VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcpIH0gfSwKKyAgICB7ICJUZXN0U3ViT2JqRW5hYmxl
ZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWMiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZ0luc3RhbmNlX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJp
dmF0ZVB1YmxpYyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVk
Q2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdEVuYWJsZWRCeVNldHRpbmdJbnN0YW5jZV9UZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWMpIH0gfSwKK307CisKK3N0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0luc3RhbmNlVGFibGUgPSB7IDIsIDMs
IHRydWUsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmluZm8oKSwgSlNUZXN0RW5hYmxlZEJ5U2V0
dGluZ0luc3RhbmNlVGFibGVWYWx1ZXMsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdJbnN0YW5jZVRh
YmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpzX2lu
Zm8gPSB7ICJUZXN0RW5hYmxlZEJ5U2V0dGluZyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nSW5zdGFuY2VUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nKSB9OwogCiBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEVuYWJsZWRCeVNldHRpbmc+JiYgaW1wbCkKICAgICA6
IEpTRE9NV3JhcHBlcjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4oc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpCkBAIC0yNDgsMTMgKzMyOCw5IEBAIHZvaWQgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZzo6ZmluaXNoQ3JlYXQKICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vf
b2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0RW5hYmxlZEJ5U2V0dGluZz46OnZhbHVlLCAiSW50ZXJm
YWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVt
ZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CiAKICAgICBpZiAo
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkKQotICAgICAg
ICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRp
bmdQdWJsaWNOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFi
bGVkQnlTZXR0aW5nX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IsIG51bGxw
dHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpKTsKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNj
ZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5OYW1lcygpLlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZVByaXZhdGVOYW1l
KCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5n
X1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHJpdmF0ZUNvbnN0cnVjdG9yLCBudWxscHRyKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVl
KSk7CiAgICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5h
YmxlZCkKLSAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLlRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nUHJpdmF0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nX1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nUHJpdmF0ZUNvbnN0cnVjdG9yLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKSk7
Ci0gICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRlc3RTZXR0aW5nRW5hYmxl
ZCkgewotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuVGVzdFN1Yk9iakVu
YWJsZWRCeVNldHRpbmdQcml2YXRlUHVibGljUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ19UZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZ1ByaXZhdGVQdWJsaWNDb25zdHJ1Y3RvciwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JT
dHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSkpOwotICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHRpbmdQcml2YXRlUHVibGljUHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0
dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdfVGVzdFN1Yk9iakVu
YWJsZWRCeVNldHRpbmdQcml2YXRlUHVibGljQ29uc3RydWN0b3IsIG51bGxwdHIpLCBhdHRyaWJ1
dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpKTsKLSAgICB9CisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29y
KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS5UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWNQcml2YXRlTmFt
ZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGlu
Z19UZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1ByaXZhdGVQdWJsaWNDb25zdHJ1Y3RvciwgbnVs
bHB0ciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21WYWx1ZSkpOwogfQogCiBKU09iamVjdCogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6Y3JlYXRl
UHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9y
Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAkocmV2aXNpb24gMjc5NTAzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRG
b3JDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTEgKzgwLDE0IEBAIHByaXZhdGU6
CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBl
LCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVz
dEVuYWJsZWRGb3JDb250ZXh0RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dD47CiAKK3RlbXBsYXRlPD4gY29uc3Qg
dW5zaWduZWQgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RF
bmFibGVkRm9yQ29udGV4dCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0RW5hYmxlZEZvckNvbnRleHRET01Db25zdHJ1Y3RvcikgfTsK
IAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0RE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEwMCwxNCArMTAzLDIxIEBAIHRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dEQKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0vKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0RW5hYmxlZEZvckNvbnRl
eHRQcm90b3R5cGVUYWJsZUluZGV4WzJdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAt
MSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RW5hYmxlZEZv
ckNvbnRleHRQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJjb25zdHJ1Y3RvciIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0RW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAK
LWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZTo6c19pbmZv
ID0geyAiVGVzdEVuYWJsZWRGb3JDb250ZXh0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlw
ZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90
b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OmluZm8o
KSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0RW5h
YmxlZEZvckNvbnRleHRQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNU
ZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RFbmFibGVkRm9y
Q29udGV4dCIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlw
ZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEVuYWJsZWRGb3JDb250
ZXh0UHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CkBAIC0xMTYsNyArMTI2LDMyIEBAIHZvaWQgSlNU
ZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGU6OmYKICAgICBKU0NfVE9fU1RSSU5HX1RBR19X
SVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0OjpzX2luZm8gPSB7ICJUZXN0RW5hYmxlZEZvckNvbnRleHQiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0KSB9Oworc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0RW5hYmxlZEZvckNvbnRl
eHRJbnN0YW5jZV9UZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHQoVk0mIHZtLCBKU09iamVjdCop
Cit7CisgICAgcmV0dXJuIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFi
bGVkRm9yQ29udGV4dF9UZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvciwgbnVs
bHB0cik7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
SW5zdGFuY2VfVGVzdFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkICYmIFRlc3RT
dWJPYmpFbmFibGVkRm9yQ29udGV4dDo6ZW5hYmxlZEZvckNvbnRleHQoKmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOwor
fQorCisvKiBIYXNoIHRhYmxlIGZvciBJbnN0YW5jZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0RW5hYmxlZEZvckNvbnRleHRJbnN0YW5jZVRhYmxlSW5k
ZXhbMl0gPSB7CisgICAgeyAwLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCit9OworCisKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dEluc3RhbmNlVGFi
bGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiVGVzdFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0IiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQ
cm9wZXJ0eUNhbGxiYWNrLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6
eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdEVuYWJsZWRGb3JDb250ZXh0SW5zdGFuY2Vf
VGVzdFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xh
enlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0RW5hYmxlZEZvckNvbnRl
eHRJbnN0YW5jZV9UZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHQpIH0gfSwKK307CisKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRJbnN0YW5jZVRhYmxlID0g
eyAxLCAxLCB0cnVlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6aW5mbygpLCBKU1Rlc3RFbmFi
bGVkRm9yQ29udGV4dEluc3RhbmNlVGFibGVWYWx1ZXMsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
SW5zdGFuY2VUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQ6OnNfaW5mbyA9IHsgIlRlc3RFbmFibGVkRm9yQ29udGV4dCIsICZCYXNlOjpzX2luZm8s
ICZKU1Rlc3RFbmFibGVkRm9yQ29udGV4dEluc3RhbmNlVGFibGUsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpIH07CiAKIEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0OjpKU1Rlc3RFbmFibGVkRm9yQ29udGV4dChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFbmFibGVkRm9yQ29udGV4
dD4mJiBpbXBsKQogICAgIDogSlNET01XcmFwcGVyPFRlc3RFbmFibGVkRm9yQ29udGV4dD4oc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCkBAIC0xMzAsOCArMTY1LDYgQEAg
dm9pZCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6ZmluaXNoQ3JlYQogCiAgICAgc3RhdGljX2Fz
c2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdEVuYWJsZWRGb3JDb250
ZXh0Pjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0
XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9i
amVjdC4iKTsKIAotICAgIGlmICgoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkudGVzdFNl
dHRpbmdFbmFibGVkICYmIFRlc3RTdWJPYmpFbmFibGVkRm9yQ29udGV4dDo6ZW5hYmxlZEZvckNv
bnRleHQoKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSkpCi0gICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZt
LCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFt
ZXMoKS5UZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRQdWJsaWNOYW1lKCksIEN1c3RvbUdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RFbmFibGVkRm9yQ29udGV4dF9UZXN0U3ViT2JqRW5h
YmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvciwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1
cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSkpOwogfQogCiBKU09iamVjdCogSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OmNyZWF0ZVByb3Rv
dHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsOCBAQCBwcml2YXRlOgogICAgIH0K
IAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlLCBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yUHJvdG90eXBlOjpCYXNlKTsKIApAQCAtMTkxLDYgKzE5Myw3IEBAIHRl
bXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF8KIH0KIEpTQ19BTk5PVEFURV9I
T1NUX0ZVTkNUSU9OKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1Y3RvckNvbnN0cnVj
dCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOwogCit0
ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1
Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25z
dHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMjA1LDIxICsyMDgsMzUgQEAgdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JETwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAK
LS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90
eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVJbmRleFs5XSA9IHsKKyAgICB7IDMsIC0xIH0sCisg
ICAgeyAwLCA4IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IDIsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29u
c3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0g
fSwKLSAgICB7ICJhdHRyMSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RF
dmVudENvbnN0cnVjdG9yX2F0dHIxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgImF0dHIyIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV2ZW50Q29uc3RydWN0b3JfYXR0cjIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisg
ICAgeyAiYXR0cjEiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV2ZW50Q29uc3RydWN0b3JfYXR0cjEpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRy
KSB9IH0sCisgICAgeyAiYXR0cjIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV2ZW50Q29uc3RydWN0b3JfYXR0
cjIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihudWxscHRyKSB9IH0sCiAjaWYgRU5BQkxFKFNQRUNJQUxfRVZFTlQpCi0gICAgeyAiYXR0cjMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RXZlbnRDb25zdHJ1Y3Rvcl9h
dHRyMyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKKyAgICB7ICJhdHRyMyIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cl9hdHRyMyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KG51bGxwdHIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAw
LCAwIH0gfSwKICNlbmRpZgogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGUgPSB7IDQsIDcsIHRydWUsIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3I6OmluZm8oKSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxl
VmFsdWVzLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVJbmRleCB9OworY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3RFdmVudENvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RF
dmVudENvbnN0cnVjdG9yUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0
b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODcsMTEgKzg3LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlLCBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZTo6QmFzZSk7
CiAKIHVzaW5nIEpTVGVzdEV2ZW50VGFyZ2V0RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RFdmVudFRhcmdldD47CiAKK3RlbXBsYXRlPD4gY29u
c3QgdW5zaWduZWQgSlNUZXN0RXZlbnRUYXJnZXRET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEV2ZW50VGFyZ2V0RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFdmVudFRhcmdl
dCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0RXZlbnRUYXJnZXRET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdEV2ZW50VGFyZ2V0RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEw
Niw3ICsxMDksMTUgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0RE9NQ29ucwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFz
aCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZVRhYmxlSW5kZXhbNF0gPSB7CisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0x
IH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFdmVudFRhcmdl
dFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewpAQCAtMTE0LDcgKzEyNSw4IEBAIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFdmVudFQKICAgICB7ICJpdGVtIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RFdmVu
dFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uX2l0ZW0pLCAoaW50cHRyX3QpICgxKSB9IH0sCiB9Owog
Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3RFdmVudFRhcmdldCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUpIH07CitzdGF0aWMgY29u
c3QgSGFzaFRhYmxlIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGUgPSB7IDIsIDMsIHRy
dWUsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCksIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBl
VGFibGVWYWx1ZXMsIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGVJbmRleCB9OworY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
RXZlbnRUYXJnZXQiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFdmVudFRhcmdldFByb3Rv
dHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI3OTUw
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxMSArODAsMTQgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlLCBKU1Rlc3RFeGNl
cHRpb25Qcm90b3R5cGU6OkJhc2UpOwogCiB1c2luZyBKU1Rlc3RFeGNlcHRpb25ET01Db25zdHJ1
Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEV4Y2VwdGlvbj47
CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0RXhjZXB0aW9uRE9NQ29uc3RydWN0
b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdEV4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0RXhjZXB0aW9uRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQpAQCAtMTAwLDE1ICsxMDMsMjUgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEV4Y2VwdGlvbkRP
TUNvbnN0cgogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
LworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg
Q29tcGFjdEhhc2hJbmRleCBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGVUYWJsZUluZGV4WzVdID0g
eworICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCA0IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
LSAgICB7ICJuYW1lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV4Y2Vw
dGlvbl9uYW1lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIm5hbWUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV4Y2VwdGlvbl9u
YW1lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4obnVsbHB0cikgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV4Y2VwdGlvblBy
b3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEV4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBl
KSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGVUYWJs
ZSA9IHsgMiwgMywgdHJ1ZSwgSlNUZXN0RXhjZXB0aW9uOjppbmZvKCksIEpTVGVzdEV4Y2VwdGlv
blByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGVUYWJsZUluZGV4
IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJUZXN0RXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEV4Y2VwdGlvblByb3RvdHlw
ZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV4Y2VwdGlvblByb3Rv
dHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3QuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODAsMTEgKzgwLDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290UHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rl
c3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdERPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdERPTUNvbnN0cnVjdG9y
KSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290RE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEwMCwxNSArMTAzLDI0IEBAIHRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVIKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0v
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlw
ZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290UHJvdG90eXBlVGFibGVJbmRleFs0XSA9IHsKKyAgICB7IDEsIC0xIH0s
CisgICAgeyAwLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKK307CisK
IAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJz
b21lQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdF9zb21lQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInNvbWVBdHRyaWJ1
dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdF9zb21lQXR0cmlidXRlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVs
bHB0cikgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGVUYWJsZSA9IHsgMiwgMywgdHJ1
ZSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjppbmZvKCksIEpTVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdFByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3RQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlw
ZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdFByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTEgKzgwLDE0IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUsIEpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OkJhc2UpOwogCiB1c2luZyBKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZTxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPjsKIAordGVtcGxhdGU8PiBjb25zdCB1
bnNpZ25lZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlRE9NQ29uc3RydWN0b3I6OlN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlRE9NQ29uc3RydWN0
b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEwMCwzMCArMTAzLDQxIEBAIHRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmwKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0v
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGVfYVNlY3JldEF0dHJpYnV0ZShWTSYgdm0sIEpT
T2JqZWN0KikKK3sKKyAgICByZXR1cm4gRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVfYVNlY3JldEF0dHJpYnV0ZSwgbnVsbHB0ciwg
RE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmluZm8o
KSwgbnVsbHB0ciB9KTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZVByb3RvdHlwZV9hU2VjcmV0QXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCk7Cit9CisKKy8qIEhhc2ggdGFibGUgZm9yIFBy
b3RvdHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZVRhYmxlSW5kZXhbNV0gPSB7CisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDAsIDQgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAxLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCi0gICAgeyAiYVNlY3JldEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlX2FTZWNyZXRBdHRyaWJ1dGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CisgICAgeyAiYVNlY3JldEF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVQcm90b3R5cGVfYVNlY3JldEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGVQcm90b3R5cGVfYVNlY3JldEF0dHJpYnV0ZSkgfSB9LAogfTsKIAotY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBl
KSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJv
dG90eXBlVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6Omlu
Zm8oKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGVQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlOjppbmZvKCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90
b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIGJvb2wgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IGZhbHNlOwotICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgp
KSB7Ci0gICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiYVNlY3JldEF0dHJpYnV0ZSIpLCBzdHJsZW4oImFTZWNy
ZXRBdHRyaWJ1dGUiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0g
ICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGlj
dGlvbmFyeSgpKQotICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CiAgICAgSlND
X1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQxLDUyICsyNDEsMTk4IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdEcKIAogdXNpbmcgSlNUZXN0R2xvYmFsT2JqZWN0RE9NQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OwogCi0v
KiBIYXNoIHRhYmxlICovCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdEdsb2JhbE9i
amVjdERPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0R2xvYmFsT2JqZWN0RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RHbG9i
YWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHbG9iYWxPYmplY3RET01D
b25zdHJ1Y3RvcikgfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpT
VGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY4XSA9IHsKLSAgICB7IC0xLCAtMSB9LAotICAg
IHsgNDEsIC0xIH0sCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0RE9NQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAg
IHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8
PiB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0R2xvYmFsT2JqZWN0Il9zKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIG51bGxwdHIsIEpT
VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKK30KKworLyog
SGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZUluZGV4WzJdID0gewog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAwLCAtMSB9LAotICAgIHsgNCwgLTEgfSwKLSAgICB7IDQ1
LCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCit9OworCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCit9OworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEdsb2JhbE9iamVjdFByb3Rv
dHlwZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNU
ZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFBy
b3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RHbG9iYWxPYmplY3RQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAm
SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdEdsb2Jh
bE9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJ
T04oKTsKK30KKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitzdGF0aWMgSlNWYWx1ZSBjcmVh
dGVKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZV9lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKFZN
JiB2bSwgSlNPYmplY3QqKQoreworICAgIHJldHVybiBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwganNUZXN0R2xvYmFsT2JqZWN0X2VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUsIHNldEpT
VGVzdEdsb2JhbE9iamVjdF9lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKTsKK30KKworc3RhdGlj
IGJvb2wgaXNFbmFibGVkSlNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VfZW5hYmxlZEF0UnVudGlt
ZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9Q
QVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpOworfQorI2VuZGlmCisKKyNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VfZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihWTSYgdm0sIEpTT2JqZWN0KiB0
aGlzT2JqZWN0KQoreworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLCAxLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiJfcywganNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
KTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2Vf
ZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpOworfQor
I2VuZGlmCisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
X2VuYWJsZWRJblNwZWNpZmljV29ybGQoVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKK3sK
KyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSwgMSwgImVuYWJsZWRJblNwZWNpZmljV29ybGQiX3MsIGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25fZW5hYmxlZEluU3BlY2lmaWNXb3JsZCk7Cit9CisKK3N0YXRpYyBib29s
IGlzRW5hYmxlZEpTVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlX2VuYWJsZWRJblNwZWNpZmljV29y
bGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKKyAgICByZXR1cm4ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KS0+d29ybGQoKS5zcGVjaWZpY1dvcmxkKCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIGNy
ZWF0ZUpTVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlX2VuYWJsZWRJblNwZWNpZmljV29ybGRXaGVu
UnVudGltZUZlYXR1cmVFbmFibGVkKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCksIDEsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCJf
cywganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9lbmFibGVkSW5TcGVjaWZpY1dv
cmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCk7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxl
ZEpTVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlX2VuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVFbmFibGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
VU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIChqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT53b3JsZCgpLnNwZWNpZmljV29ybGQoKSAmJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgp
KTsKK30KKworc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2Vf
ZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkKFZNJiB2bSwg
SlNPYmplY3QqIHRoaXNPYmplY3QpCit7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIDEsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQiX3MsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25fZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVk
KTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2Vf
ZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7
CisgICAgcmV0dXJuIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT53
b3JsZCgpLnNwZWNpZmljV29ybGQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmUxRW5hYmxlZCgpKTsKK30KKworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVKU1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZV90ZXN0SlNCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVj
dCkKK3sKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0ZXN0R2xvYmFsT2JqZWN0
VGVzdEpTQnVpbHRpbkZ1bmN0aW9uQ29kZUdlbmVyYXRvcih2bSksIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VfdGVzdEpTQnVpbHRpbkZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCk7
Cit9CisjZW5kaWYKKworc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VfY2FsY3VsYXRlU2VjcmV0UmVzdWx0KFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3Qp
Cit7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xvYmFs
T2JqZWN0KCksIDAsICJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiX3MsIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25fY2FsY3VsYXRlU2VjcmV0UmVzdWx0KTsKK30KKworc3RhdGljIGJv
b2wgaXNFbmFibGVkSlNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VfY2FsY3VsYXRlU2VjcmV0UmVz
dWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCk7Cit9
CisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlX2dldFNl
Y3JldEJvb2xlYW4oVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKK3sKKyAgICByZXR1cm4g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgMCwgImdl
dFNlY3JldEJvb2xlYW4iX3MsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25fZ2V0
U2VjcmV0Qm9vbGVhbik7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlX2dldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5pc1NlY3VyZUNvbnRleHQoKTsKK30KKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitz
dGF0aWMgSlNWYWx1ZSBjcmVhdGVKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZV90ZXN0RmVhdHVy
ZUdldFNlY3JldEJvb2xlYW4oVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKK3sKKyAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwg
MCwgInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiJfcywganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbl90ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4pOworfQorCitzdGF0aWMg
Ym9vbCBpc0VuYWJsZWRKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZV90ZXN0RmVhdHVyZUdldFNl
Y3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250
ZXh0KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVh
dHVyZUVuYWJsZWQoKSk7Cit9CisjZW5kaWYKKworLyogSGFzaCB0YWJsZSBmb3IgSW5zdGFuY2Ug
Ki8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlVGFibGVJbmRleFsyNzFdID0geworICAgIHsgMywgMjcwIH0sCisgICAgeyA0
MiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKKyAgICB7IDUsIC0xIH0s
CisgICAgeyA0NiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAgeyA1NiwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDQ5LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2NCwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAorICAgIHsgNTAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDY1LCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDcwLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzUsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDM2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2NywgLTEgfSwKLSAg
ICB7IDEzLCAyNjEgfSwKKyAgICB7IDY5LCAtMSB9LAorICAgIHsgNjgsIC0xIH0sCisgICAgeyAx
NCwgMjYxIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCkBAIC0yOTQsMTEgKzQ0MCwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCi0gICAgeyAzOSwgLTEgfSwKLSAgICB7IDIwLCAyNTggfSwKLSAgICB7IDYsIC0xIH0sCisg
ICAgeyA0MCwgLTEgfSwKKyAgICB7IDIxLCAyNTggfSwKKyAgICB7IDcsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDQ2LCAtMSB9LAorICAgIHsgNDcsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMDcsMjAgKzQ1MywyMCBA
QCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNywgLTEgfSwKKyAg
ICB7IDM4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgMjIsIDI2NiB9LAorICAgIHsgMjMsIDI2NiB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDUsIC0xIH0sCisgICAgeyA2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzI4LDI3ICs0NzQsMjcgQEAg
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzAsIC0xIH0sCi0gICAg
eyA1NywgLTEgfSwKKyAgICB7IDMxLCAtMSB9LAorICAgIHsgNTgsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA5LCAyNTcgfSwKKyAgICB7
IDEwLCAyNTcgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNTksIC0xIH0sCi0gICAgeyAxOSwg
LTEgfSwKKyAgICB7IDYwLCAtMSB9LAorICAgIHsgMjAsIDI2OCB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTgsIC0xIH0sCisgICAg
eyAxOSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzYsIC0xIH0sCisgICAgeyAzNywgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM1
NiwxNSArNTAyLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDI0LCAtMSB9LAorICAgIHsgMjUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDIsIC0x
IH0sCi0gICAgeyAzOCwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAorICAgIHsgMzksIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDIyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzc2LDM5ICs1MjEsMzkgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjgsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAg
ICB7IDQzLCAtMSB9LAorICAgIHsgMjksIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDQ0
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAorICAg
IHsgNTUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyA0OCwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAorICAgIHsgNzYsIC0xIH0sCisgICAg
eyA0OSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTAsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDExLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDY1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAgeyA2NiwgMjY5IH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjcsIC0xIH0sCi0gICAgeyAzMiwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAorICAgIHsgMjgsIC0xIH0sCisgICAgeyAzMywgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQxNywxMCAr
NTYyLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE1LCAy
NjAgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjAsIC0xIH0sCisgICAgeyAxNiwgMjYwIH0s
CiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDYxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDI4LDIyICs1NzMsMjMgQEAgc3RhdGlj
IGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzQsIDI2NyB9LAogICAgIHsgLTEs
IC0xIH0sCi0gICAgeyAxNiwgMjU2IH0sCisgICAgeyAzNSwgMjY3IH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDYzLCAtMSB9LAorICAgIHsgMTcsIDI1NiB9LAogICAgIHsgLTEsIC0xIH0sCisg
ICAgeyA2NCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDc1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAotICAgIHsgMTIsIC0xIH0sCisgICAgeyAxMywgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ1MSwxMSArNTk3
LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ3LCAtMSB9
LAorICAgIHsgNDgsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyAxMSwgLTEgfSwKKyAgICB7IDEyLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDY0LDU4ICs2MTAs
NjEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNTgsIC0xIH0s
CisgICAgeyA1OSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgOCwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAorICAgIHsgOSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAg
ICB7IDUwLCAyNjQgfSwKLSAgICB7IDcsIDI2MyB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAorICAgIHsgNTEsIDI2NCB9LAorICAgIHsgOCwgMjYz
IH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDYyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAx
NCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjUsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDE1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzMSwgLTEgfSwKKyAg
ICB7IDI2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDMy
LCAtMSB9LAorICAgIHsgNzQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMsIC0xIH0s
Ci0gICAgeyA1MiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAorICAgIHsgNCwgLTEgfSwKICAgICB7
IDUzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAgeyA1NCwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE3LCAtMSB9LAot
ICAgIHsgMjMsIDI1OSB9LAotICAgIHsgMjYsIDI2NSB9LAotICAgIHsgMjksIDI2MiB9LAotICAg
IHsgMzMsIC0xIH0sCi0gICAgeyA0MCwgLTEgfSwKLSAgICB7IDQyLCAtMSB9LAotICAgIHsgNDQs
IC0xIH0sCi0gICAgeyA1MSwgLTEgfSwKLSAgICB7IDU2LCAtMSB9LAotICAgIHsgNjIsIC0xIH0s
Ci0gICAgeyA2NiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTgsIC0xIH0sCisgICAg
eyAyNCwgMjU5IH0sCisgICAgeyAyNywgMjY1IH0sCisgICAgeyAzMCwgMjYyIH0sCisgICAgeyAz
NCwgLTEgfSwKKyAgICB7IDQxLCAtMSB9LAorICAgIHsgNDMsIC0xIH0sCisgICAgeyA0NSwgLTEg
fSwKKyAgICB7IDUyLCAtMSB9LAorICAgIHsgNTcsIC0xIH0sCisgICAgeyA2MywgLTEgfSwKKyAg
ICB7IDY3LCAtMSB9LAorICAgIHsgNzEsIC0xIH0sCisgICAgeyA3MiwgLTEgfSwKKyAgICB7IDcz
LCAtMSB9LAogfTsKIAogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFs
T2JqZWN0VGFibGVWYWx1ZXNbXSA9CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJyZWd1bGFyQXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfcmVndWxhckF0dHJpYnV0
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdEdsb2JhbE9iamVjdF9yZWd1bGFyQXR0cmlidXRlKSB9IH0sCiAgICAgeyAicHVi
bGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
X3B1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RfcHVibGljQW5k
UHJpdmF0ZUF0dHJpYnV0ZSkgfSB9LApAQCAtNTI0LDEzNiArNjczLDExMiBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRy
aW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKLSAgICB7ICJUZXN0Q0VSZWFjdGlvbnMiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
LSAgICB7ICJUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAg
eyAiVGVzdENhbGxUcmFjZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRy
YWNlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgeyAi
ZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjaywgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihj
cmVhdGVKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZV9lbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4o
aXNFbmFibGVkSlNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VfZW5hYmxlZEF0UnVudGltZUF0dHJp
YnV0ZSkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAor
I2VuZGlmCisgICAgeyAiVGVzdENFUmVhY3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmpl
Y3RfVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3RD
YWxsVHJhY2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KG51bGxwdHIpIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKLSAgICB7
ICJUZXN0Q2FsbGJhY2tJbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0
Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJbnRlcmZh
Y2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNp
YywgeyAwLCAwIH0gfSwKICNlbmRpZgotICAgIHsgIlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3RET01KSVQiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RE9NSklUQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAg
eyAiVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCi0gICAgeyAiVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
Ci0gICAgeyAiVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEds
b2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAotICAgIHsgIlRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0RG9tYWluU2VjdXJpdHkiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
LSAgICB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
X1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdEV2ZW50
VGFyZ2V0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50VGFyZ2V0Q29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdEV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0R2xvYmFsT2JqZWN0Iiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAg
IHsgIlRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RfVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAg
ICB7ICJUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAotICAgIHsgIlRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdEl0ZXJhYmxlIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJBdWRpbyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0X0F1ZGlvQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3RNYXBMaWtlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE1hcExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7
ICJUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0X1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7
ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3ROYW1lZEdldHRl
ckNhbGxXaXRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGhDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9U
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAotICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAotICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3Rf
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0SW50ZXJmYWNlTmFt
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RJbnRlcmZhY2VOYW1lQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCisgICAgeyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdERPTUpJVCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3RET01KSVRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7
ICJUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEds
b2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51
bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3RE
b21haW5TZWN1cml0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REb21haW5TZWN1
cml0eUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3RFdmVudENvbnN0cnVjdG9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0RXZlbnRUYXJnZXQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAg
ICB7ICJUZXN0RXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3RHbG9iYWxPYmplY3QiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9
IH0sCisgICAgeyAiVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVs
bHB0cikgfSB9LAorICAgIHsgIlRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJU
ZXN0SXRlcmFibGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0SXRlcmFibGVDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4obnVsbHB0cikgfSB9LAorICAgIHsgIkF1ZGlvIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmpl
Y3RfQXVkaW9Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdE1hcExpa2UiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikg
fSB9LAorICAgIHsgIlRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnND
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
R2xvYmFsT2JqZWN0X1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsg
IlRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisg
ICAgeyAiVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihu
dWxscHRyKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
X1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0s
CisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEds
b2JhbE9iamVjdF9UZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0
cikgfSB9LAorICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAg
eyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdF9UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxs
cHRyKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9i
amVjdF9UZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3RJ
bnRlcmZhY2VOYW1lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEludGVyZmFjZU5h
bWVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uRGVyaXZlZCkK
LSAgICB7ICJUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9i
amVjdF9UZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKICNlbHNlCiAgICAg
eyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgotICAgIHsgIlRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmpl
Y3RfVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0g
fSwKLSAgICB7ICJUZXN0UGx1Z2luSW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmpl
Y3RfVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3RSZWFk
T25seU1hcExpa2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0UmVhZE9ubHlNYXBM
aWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdFJlYWRPbmx5U2V0TGlrZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0g
fSwKLSAgICB7ICJUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAg
IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0UGx1Z2luSW50ZXJmYWNlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0
cikgfSB9LAorICAgIHsgIlRlc3RSZWFkT25seU1hcExpa2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdF9UZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAg
eyAiVGVzdFJlYWRPbmx5U2V0TGlrZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RS
ZWFkT25seVNldExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0UmVwb3J0
RXh0cmFNZW1vcnlDb3N0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAogI2lmIEVOQUJMRShDb25kaXRp
b24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLSAgICB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCiAj
ZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKLSAgICB7
ICJUZXN0U2V0TGlrZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RTZXRMaWtlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9uc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3RTdHJpbmdpZmllciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RTdHJpbmdpZmllckNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAotICAgIHsgIlRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAotICAgIHsgIlRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Db25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAg
IHsgIlRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0X1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAotICAgIHsgIlRlc3RUeXBlZGVmcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rl
c3RUeXBlZGVmc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIlRlc3RTZXRMaWtlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdFNldExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwK
KyAgICB7ICJUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdFN0cmluZ2lmaWVyIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisg
ICAgeyAiVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihu
dWxscHRyKSB9IH0sCisgICAgeyAiVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxl
bWVudGVkQXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0X1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxw
dHIpIH0gfSwKKyAgICB7ICJUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiVGVzdFR5cGVkZWZz
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxs
cHRyKSB9IH0sCiAgICAgeyAicmVndWxhck9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbl9yZWd1bGFyT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMSkgfSB9LAotfTsK
LQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZSA9IHsgNjgs
IDI1NSwgdHJ1ZSwgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVj
dFRhYmxlVmFsdWVzLCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4IH07Ci0vKiBIYXNoIHRh
YmxlIGZvciBjb25zdHJ1Y3RvciAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KLXsKICNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQotICAgIHsgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25fZW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvblN0YXRpYyksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7ICJlbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlByb3BlcnR5Q2FsbGJhY2spLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlX2Vu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVBy
b3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZV9lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKKyAgICB7ICJlbmFibGVkSW5TcGVjaWZpY1dv
cmxkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3Bl
cnR5Q2FsbGJhY2spLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVBy
b3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlX2VuYWJsZWRJ
blNwZWNpZmljV29ybGQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5h
YmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZV9lbmFibGVk
SW5TcGVjaWZpY1dvcmxkKSB9IH0sCisgICAgeyAiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5S
dW50aW1lRmVhdHVyZUVuYWJsZWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjayksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VfZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihp
c0VuYWJsZWRKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZV9lbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCkgfSB9LAorICAgIHsgImVuYWJsZWRJblNwZWNpZmlj
V29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZV9lbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0
dXJlc0VuYWJsZWQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxl
ZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZV9lbmFibGVkSW5T
cGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQpIH0gfSwKKyNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQorICAgIHsgInRlc3RKU0J1aWx0aW5GdW5jdGlvbiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihj
cmVhdGVKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZV90ZXN0SlNCdWlsdGluRnVuY3Rpb24pLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0Vu
YWJsZWRKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZV90ZXN0SlNCdWlsdGluRnVuY3Rpb24pIH0g
fSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgor
ICAgIHsgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZV9jYWxjdWxhdGVTZWNyZXRSZXN1bHQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZV9jYWxjdWxhdGVTZWNyZXRSZXN1bHQpIH0gfSwKKyAgICB7ICJnZXRT
ZWNyZXRCb29sZWFuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlByb3BlcnR5Q2FsbGJhY2spLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
X2dldFNlY3JldEJvb2xlYW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5
RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZV9nZXRT
ZWNyZXRCb29sZWFuKSB9IH0sCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICB7ICJ0ZXN0
RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjayksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VfdGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VfdGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKSB9IH0sCiAjZWxz
ZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKIH07CiAKLXRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEdsb2JhbE9iamVjdERPTUNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0R2xvYmFsT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHbG9iYWxPYmplY3RET01Db25zdHJ1
Y3RvcikgfTsKLQotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdERPTUNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RHbG9iYWxPYmplY3RET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QuZ2V0UHJv
dG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNO
b250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEdsb2JhbE9iamVjdCJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwot
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RHbG9iYWxP
YmplY3Q6OmluZm8oKSwgSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JUYWJsZVZhbHVlcywg
KnRoaXMpOwotfQotCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNv
bnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRh
YmxlSW5kZXhbMl0gPSB7Ci0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDAsIC0xIH0sCi19OwotCi0K
LXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rlc3RH
bG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlVGFibGVWYWx1
ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlSW5kZXggfTsKLWNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RHbG9iYWxP
YmplY3QiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlVGFibGUs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBl
KSB9OwotCi12b2lkIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dEdsb2JhbE9iamVjdDo6c19pbmZvID0geyAiVGVzdEdsb2JhbE9iamVjdCIsICZCYXNlOjpzX2lu
Zm8sICZKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RHbG9iYWxPYmplY3QpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlVGFibGUgPSB7IDc3LCAyNTUsIHRydWUsIEpTVGVzdEdsb2JhbE9i
amVjdDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZVRhYmxlVmFsdWVzLCBKU1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rl
c3RHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIlRlc3RHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19p
bmZvLCAmSlNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RHbG9iYWxPYmplY3QpIH07CiAKIEpTVGVzdEdsb2JhbE9iamVjdDo6
SlNUZXN0R2xvYmFsT2JqZWN0KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEdsb2JhbE9iamVjdD4mJiBpbXBsKQogICAgIDogSlNE
T01XcmFwcGVyPFRlc3RHbG9iYWxPYmplY3Q+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKQpAQCAtNjY5LDQxICs3OTQsMTEgQEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKAogCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQo
KSkKLSAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGVQdWJsaWNOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBq
c1Rlc3RHbG9iYWxPYmplY3RfZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSwgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0X2VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUpLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvcikpKTsKLSNlbmRpZgotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5w
dWJsaWNBbmRQcml2YXRlQXR0cmlidXRlUHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sIGpzVGVzdEdsb2JhbE9iamVjdF9wdWJsaWNBbmRQcml2YXRlQXR0cmlidXRl
LCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKTsKLSNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5w
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGVQcml2YXRlTmFtZSgpLCBDdXN0b21H
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFsT2JqZWN0X3B1YmxpY0FuZFByaXZh
dGVDb25kaXRpb25hbEF0dHJpYnV0ZSwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUo
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5h
YmxlZCgpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvblB1YmxpY05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvbl9lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uLCBOb0ludHJpbnNpYywg
YXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RG
ZWF0dXJlRW5hYmxlZCgpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhp
cywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5h
bWVzKCkuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY1B1YmxpY05hbWUoKSwgMSwganNU
ZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbl9lbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uU3RhdGljLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7Ci0jZW5kaWYK
LSAgICBpZiAod29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNwZWNpZmljV29ybGQoKSkKLSAgICAg
ICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRJblNwZWNpZmlj
V29ybGRQdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25f
ZW5hYmxlZEluU3BlY2lmaWNXb3JsZCwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1
cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSkpOwotICAgIGlmICgod29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNwZWNpZmljV29ybGQoKSAm
JiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5h
YmxlZCgpKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkUHVibGljTmFtZSgp
LCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX2VuYWJsZWRJblNwZWNpZmlj
V29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0Zv
clN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pKSk7Ci0gICAgaWYgKCh3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc3BlY2lmaWNX
b3JsZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZl
YXR1cmVFbmFibGVkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS50ZXN0RmVhdHVyZTFFbmFibGVkKCkpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+
YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNF
bmFibGVkUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
X2VuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZCwgTm9JbnRy
aW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOwotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
Ci0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZl
YXR1cmVFbmFibGVkKCkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlz
LCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFt
ZXMoKS50ZXN0UHJpdmF0ZUZ1bmN0aW9uUHJpdmF0ZU5hbWUoKSwgMCwganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbl90ZXN0UHJpdmF0ZUZ1bmN0aW9uLCBOb0ludHJpbnNpYywgYXR0
cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pKSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQot
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0
dXJlRW5hYmxlZCgpKQotICAgICAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXMs
IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1l
cygpLnRlc3RKU0J1aWx0aW5GdW5jdGlvblB1YmxpY05hbWUoKSwgdGVzdEdsb2JhbE9iamVjdFRl
c3RKU0J1aWx0aW5GdW5jdGlvbkNvZGVHZW5lcmF0b3Iodm0pLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGlu
KSkpOworICAgICAgICBwdXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnRlc3RQcml2YXRlRnVuY3Rpb25Qcml2YXRl
TmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMtPmdsb2JhbE9iamVjdCgpLCAwLCAi
dGVzdFByaXZhdGVGdW5jdGlvbiJfcywganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
bl90ZXN0UHJpdmF0ZUZ1bmN0aW9uKSk7CiAjZW5kaWYKLSAgICBpZiAoanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlz
U2VjdXJlQ29udGV4dCgpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhp
cywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5h
bWVzKCkuY2FsY3VsYXRlU2VjcmV0UmVzdWx0UHVibGljTmFtZSgpLCAwLCBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uX2NhbGN1bGF0ZVNlY3JldFJlc3VsdCwgTm9JbnRyaW5zaWMs
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOwotICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVD
b250ZXh0KCkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5n
ZXRTZWNyZXRCb29sZWFuUHVibGljTmFtZSgpLCAwLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uX2dldFNlY3JldEJvb2xlYW4sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3Ry
dWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbikpKTsKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHVibGljQW5kUHJp
dmF0ZUF0dHJpYnV0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBqc1Rlc3RHbG9iYWxPYmplY3RfcHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSwgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0X3B1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKICNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQotICAgIGlmICgoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgp
ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVF
bmFibGVkKCkpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCku
dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuUHVibGljTmFtZSgpLCAwLCBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uX3Rlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiwgTm9JbnRy
aW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOworICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vz
c29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS5wdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGVQcml2YXRlTmFt
ZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFsT2JqZWN0X3B1
YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSwgc2V0SlNUZXN0R2xvYmFsT2JqZWN0
X3B1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikpOwogI2VuZGlmCiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ci5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzksMTEgKzc5LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0
aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCiB1c2luZyBKU1Rlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPjsKIAordGVtcGxhdGU8
PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3Ry
dWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKQEAgLTk5LDE0ICsxMDIsMjEgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZQogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25z
dCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
UHJvdG90eXBlVGFibGVJbmRleFsyXSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEg
fSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJjb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlVGFibGUg
PSB7IDEsIDEsIHRydWUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmluZm8oKSwg
SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlVGFibGVJbmRleCB9OworY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgJkpT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBl
KSB9OwogCiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNzk1MDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTEgKzc5LDE0
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsK
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZTxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+OwogCit0ZW1wbGF0ZTw+
IGNvbnN0IHVuc2lnbmVkIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNv
bnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yKSB9
OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29u
c3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTk5LDE0ICsxMDIsMjEgQEAg
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvdwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJv
dG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGVUYWJsZUluZGV4WzJdID0gewor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlw
ZTo6c19pbmZvID0geyAiVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGVUYWJs
ZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpp
bmZvKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZVRhYmxl
VmFsdWVzLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGVUYWJs
ZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvblByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODcsMTEgKzg3LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAogdXNp
bmcgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXI+OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0
cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEwNyw3ICsxMTAs
MTUgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSQogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBm
b3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBK
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVUYWJsZUluZGV4WzRdID0g
eworICAgIHsgMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CkBAIC0x
MTUsNyArMTI2LDggQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEluZGV4ZQog
ICAgIHsgImluZGV4ZWRTZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZUZ1bmN0aW9uX2luZGV4ZWRTZXR0ZXIpLCAoaW50cHRyX3QpICgyKSB9IH0sCiB9Owog
Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRh
YmxlIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxlID0geyAy
LCAzLCB0cnVlLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmluZm8oKSwgSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVz
dEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0
IENsYXNzSW5mbyBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIlRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZv
LCAmSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGUsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
UHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNTcg
KzE5NCw4MSBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlND
OjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGUsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpT
VGVzdEludGVyZmFjZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRl
cmZhY2U+OwogCi0vKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLworLyogSGFzaCB0YWJs
ZSBmb3IgQ29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaElu
ZGV4IEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVJbmRleFsxN10gPSB7CisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDAsIDE2IH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDQsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDUsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDYsIC0xIH0sCisgICAgeyA3LCAtMSB9LAorICAgIHsgMywgLTEgfSwKK307CisKIAogc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVW
YWx1ZXNbXSA9CiB7Ci0jaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCi0gICAgeyAiTUlYSU5fQ09OU1RBTlQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEp
IH0gfSwKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAg
ICB7ICJzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yX3N1cHBsZW1lbnRhbFN0YXRpY1JlYWRP
bmx5QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KG51bGxwdHIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAw
LCAwIH0gfSwKICNlbmRpZgotI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQotICAgIHsgIk1JWElOX1JFRkxFQ1RFRF9DT05TVEFOVCIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsg
KGxvbmcgbG9uZykoMikgfSB9LAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQorICAgIHsgInN1cHBsZW1lbnRhbFN0YXRpY0F0dHIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yX3N1cHBsZW1lbnRhbFN0YXRpY0F0dHIpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcl9zdXBwbGVtZW50YWxTdGF0aWNBdHRyKSB9IH0sCiAjZWxz
ZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKLSNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJQQVJUSUFMX01J
WElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoNSkg
fSB9LAorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAg
IHsgInN1cHBsZW1lbnRhbE1ldGhvZDQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rp
b25fc3VwcGxlbWVudGFsTWV0aG9kNCksIChpbnRwdHJfdCkgKDApIH0gfSwKICNlbHNlCiAgICAg
eyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgotI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotICAgIHsgIlNVUFBMRU1FTlRBTENPTlNU
QU5UMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50
ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAorI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsgIk1JWElOX0NPTlNUQU5UIiwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBO
b0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKLSNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKLSAgICB7ICJTVVBQTEVNRU5UQUxDT05TVEFOVDIiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50
cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKKyAgICB7ICJNSVhJTl9SRUZMRUNURURfQ09OU1RBTlQiLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5v
SW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0lu
dHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgotI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQotICAgIHsgInN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Jfc3VwcGxlbWVudGFsU3RhdGlj
UmVhZE9ubHlBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBO
b0ludHJpbnNpYywgeyAobG9uZyBsb25nKSg1KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKLSAgICB7ICJzdXBwbGVtZW50YWxTdGF0aWNBdHRyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KDApLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
X3N1cHBsZW1lbnRhbFN0YXRpY0F0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcl9zdXBw
bGVtZW50YWxTdGF0aWNBdHRyKSB9IH0sCisgICAgeyAiU1VQUExFTUVOVEFMQ09OU1RBTlQxIiwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBO
b0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgxKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKLSAgICB7ICJzdXBwbGVtZW50YWxNZXRob2Q0Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uX3N1cHBsZW1lbnRhbE1ldGhvZDQpLCAoaW50cHRy
X3QpICgwKSB9IH0sCisgICAgeyAiU1VQUExFTUVOVEFMQ09OU1RBTlQyIiwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywg
eyAobG9uZyBsb25nKSgyKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsg
MCwgMCB9IH0sCiAjZW5kaWYKIH07CiAKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSA9IHsgOCwgMTUsIHRydWUsIG51bGxwdHIsIEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
VGFibGVJbmRleCB9OwogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQogc3RhdGljX2Fzc2VydChUZXN0SW50ZXJmYWNlOjpNSVhJTl9DT05TVEFOVCA9PSAxLCAi
TUlYSU5fQ09OU1RBTlQgaW4gVGVzdEludGVyZmFjZSBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9t
IElETCIpOwogI2VuZGlmCkBAIC0yODksNyArMzEzLDggQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMXwogfQogSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0
SW50ZXJmYWNlRE9NQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTVGVzdEludGVyZmFjZURPTUNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3QpOwogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJ
bnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50
ZXJmYWNlRE9NQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVz
dEludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwordGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJ
bnRlcmZhY2UiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJs
ZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1
Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEludGVyZmFjZURPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CkBAIC0zMDIsNjEgKzMyNywxNDkgQEAgdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdEludGVyZmFjZURPTUNvbnN0cgogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2U6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdEludGVyZmFjZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8o
KSwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIHJl
aWZ5U3RhdGljUHJvcGVydGllcyh2bSwgbnVsbHB0ciwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JUYWJsZVZhbHVlcywgKnRoaXMpOwogfQogCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUg
Ki8KKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK3N0YXRp
YyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdEludGVyZmFjZVByb3RvdHlwZV9taXhpblNldHRpbmdzQ29u
ZGl0aW9uYWxPcGVyYXRpb24oVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKK3sKKyAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwg
MCwgIm1peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiJfcywganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25fbWl4aW5TZXR0aW5nc0NvbmRpdGlvbmFsT3BlcmF0aW9uKTsKK30K
Kworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlX21peGluU2V0
dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNldHRpbmdzVmFsdWVzKCkudGVzdFNldHRpbmdFbmFibGVkOworfQorI2VuZGlmCisKKy8qIEhh
c2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGVJbmRleFs3MV0gPSB7CisgICAg
eyAyNSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwgNjQgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMjcsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAy
OSwgLTEgfSwKKyAgICB7IDgsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAzMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgNywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAzLCA2NSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCA2OSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyMCwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgOSwgLTEgfSwKKyAgICB7IDEyLCAtMSB9LAorICAg
IHsgMjQsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjIs
IC0xIH0sCisgICAgeyAxMywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjgsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDEwLCAtMSB9LAorICAgIHsgNCwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMTUsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE4LCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTQsIDY4
IH0sCisgICAgeyAxMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDMwLCAtMSB9LAorICAgIHsgMTYsIC0xIH0sCisgICAgeyA1
LCA2NiB9LAorICAgIHsgNiwgNzAgfSwKKyAgICB7IDE3LCA2NyB9LAorICAgIHsgMTksIC0xIH0s
CisgICAgeyAyMSwgLTEgfSwKKyAgICB7IDIzLCAtMSB9LAorICAgIHsgMjYsIC0xIH0sCit9Owor
CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCi0gICAgeyAibWl4aW5SZWFkT25seUF0dHJpYnV0ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VfbWl4aW5SZWFkT25seUF0dHJp
YnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKKyAgICB7ICJtaXhpblJlYWRPbmx5QXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RJbnRlcmZhY2VfbWl4aW5SZWFkT25seUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKICNlbHNlCiAg
ICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgIm1peGluQXR0cmlidXRl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RJbnRlcmZhY2VfbWl4aW5BdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VfbWl4aW5BdHRy
aWJ1dGUpIH0gfSwKKyAgICB7ICJtaXhpbkF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZV9taXhpbkF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEludGVyZmFj
ZV9taXhpbkF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7
IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCi0gICAgeyAibWl4aW5DdXN0b21BdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZV9taXhp
bkN1c3RvbUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEludGVyZmFjZV9taXhpbkN1c3RvbUF0dHJpYnV0ZSkg
fSB9LAorICAgIHsgIm1peGluQ3VzdG9tQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUs
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlX21peGluQ3VzdG9tQXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50
ZXJmYWNlX21peGluQ3VzdG9tQXR0cmlidXRlKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJtaXhpbk5vZGVBdHRyaWJ1dGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVy
ZmFjZV9taXhpbk5vZGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2VfbWl4aW5Ob2RlQXR0cmli
dXRlKSB9IH0sCisgICAgeyAibWl4aW5Ob2RlQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlX21peGluTm9kZUF0dHJpYnV0ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdElu
dGVyZmFjZV9taXhpbk5vZGVBdHRyaWJ1dGUpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0lu
dHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQotICAgIHsgInBhcnRpYWxNaXhpbkF0dHJpYnV0ZUZyb21QYXJ0
aWFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZV9wYXJ0
aWFsTWl4aW5BdHRyaWJ1dGVGcm9tUGFydGlhbCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJwYXJ0aWFsTWl4aW5B
dHRyaWJ1dGVGcm9tUGFydGlhbCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlX3BhcnRpYWxNaXhp
bkF0dHJpYnV0ZUZyb21QYXJ0aWFsKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5v
SW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi0gICAgeyAic3VwcGxlbWVudGFsU3RyMSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2Vfc3VwcGxlbWVudGFsU3RyMSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKKyAgICB7ICJzdXBwbGVtZW50YWxTdHIxIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2Vf
c3VwcGxlbWVudGFsU3RyMSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQotICAgIHsgInN1cHBsZW1lbnRhbFN0cjIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZV9z
dXBwbGVtZW50YWxTdHIyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJmYWNlX3N1cHBsZW1lbnRhbFN0cjIpIH0gfSwK
KyAgICB7ICJzdXBwbGVtZW50YWxTdHIyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0SW50ZXJmYWNlX3N1cHBsZW1lbnRhbFN0cjIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RJbnRlcmZhY2Vfc3VwcGxl
bWVudGFsU3RyMikgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAg
fSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCi0gICAgeyAic3VwcGxlbWVudGFsU3RyMyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlX3N1cHBsZW1lbnRhbFN0
cjMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RJbnRlcmZhY2Vfc3VwcGxlbWVudGFsU3RyMykgfSB9LAorICAgIHsgInN1cHBs
ZW1lbnRhbFN0cjMiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZh
Y2Vfc3VwcGxlbWVudGFsU3RyMyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEludGVyZmFjZV9zdXBwbGVtZW50YWxTdHIzKSB9
IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLSAgICB7ICJz
dXBwbGVtZW50YWxOb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2Vfc3VwcGxlbWVudGFsTm9kZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdElu
dGVyZmFjZV9zdXBwbGVtZW50YWxOb2RlKSB9IH0sCisgICAgeyAic3VwcGxlbWVudGFsTm9kZSIs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZV9zdXBwbGVtZW50
YWxOb2RlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0SW50ZXJmYWNlX3N1cHBsZW1lbnRhbE5vZGUpIH0gfSwKICNlbHNlCiAg
ICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotICAgIHsgInJlZmxlY3RBdHRyaWJ1
dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEludGVyZmFjZV9yZWZsZWN0QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SW50ZXJmYWNlX3JlZmxl
Y3RBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJyZWZsZWN0QXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlX3JlZmxlY3RBdHRyaWJ1dGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RJbnRlcmZhY2VfcmVmbGVjdEF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5v
SW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCkBAIC0zODYsNyArNDk5LDcgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZgogICAgIHsgMCwgMCwgTm9JbnRyaW5z
aWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKLSAgICB7ICJtaXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uX21peGluU2V0dGluZ3NDb25kaXRpb25h
bE9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtaXhpblNldHRpbmdzQ29u
ZGl0aW9uYWxPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjayksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlX21peGluU2V0dGluZ3NDb25kaXRpb25hbE9wZXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdEludGVy
ZmFjZVByb3RvdHlwZV9taXhpblNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24pIH0gfSwKICNl
bHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgpAQCAtNDI1
LDUxICs1MzgsNDIgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZgog
ICAgIHsgInZhbHVlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25fdmFsdWVzKSwg
KGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImZvckVhY2giLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uX2ZvckVhY2gpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiTUlYSU5fQ09OU1RBTlQi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIs
IE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKKyAgICB7ICJNSVhJTl9DT05TVEFO
VCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdl
ciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAs
IE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgeyAiTUlYSU5fUkVGTEVDVEVEX0NPTlNUQU5U
IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2Vy
LCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCisgICAgeyAiTUlYSU5fUkVGTEVD
VEVEX0NPTlNUQU5UIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29u
c3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCiAjZWxzZQog
ICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKLSAgICB7ICJQQVJUSUFMX01JWElO
X0NPTlNUQU5UX0ZST01fUEFSVElBTCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoNSkgfSB9
LAorICAgIHsgIlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIiwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNp
YywgeyAobG9uZyBsb25nKSg1KSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMs
IHsgMCwgMCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKLSAgICB7ICJTVVBQTEVNRU5UQUxDT05TVEFOVDEiLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7
IChsb25nIGxvbmcpKDEpIH0gfSwKKyAgICB7ICJTVVBQTEVNRU5UQUxDT05TVEFOVDEiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50
cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQotICAgIHsgIlNVUFBMRU1FTlRBTENPTlNUQU5UMiIsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5z
aWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAorICAgIHsgIlNVUFBMRU1FTlRBTENPTlNUQU5UMiIs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwg
Tm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMikgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5v
SW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEludGVyZmFj
ZVByb3RvdHlwZVRhYmxlID0geyAzMiwgNjMsIHRydWUsIEpTVGVzdEludGVyZmFjZTo6aW5mbygp
LCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZTo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCks
IEpTVGVzdEludGVyZmFjZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgYm9vbCBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gZmFsc2U7Ci0jaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi0gICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGlu
Z3NWYWx1ZXMoKS50ZXN0U2V0dGluZ0VuYWJsZWQpIHsKLSAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtaXhp
blNldHRpbmdzQ29uZGl0aW9uYWxPcGVyYXRpb24iKSwgc3RybGVuKCJtaXhpblNldHRpbmdzQ29u
ZGl0aW9uYWxPcGVyYXRpb24iKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
LSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAg
ICB9Ci0jZW5kaWYKLSAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1
Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0
KHZtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQ
dWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKKyAgICBhdXRvJiBlbnRyaWVzID0gdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnR5
KHZtLCBpbmZvKCksIGVudHJpZXMsICppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5
KGVudHJpZXMpLCAqdGhpcyk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qodm0sIGVudHJpZXMpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
ICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCShy
ZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MCwxMSArODAsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3Bl
cnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUsIEpTVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjsKIAordGVtcGxhdGU8PiBj
b25zdCB1bnNpZ25lZCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZURPTUNvbnN0cnVj
dG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQpAQCAtMTAwLDE1ICsxMDMsMjQgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbgogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9y
IHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJz
Y29yZVByb3RvdHlwZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAxLCAtMSB9LAorICAgIHsgMCwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCit9OworCiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgInJl
YWRvbmx5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlX3JlYWRvbmx5KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInJlYWRvbmx5IiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZV9yZWFkb25seSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwK
IH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVBy
b3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNo
VGFibGUgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGVUYWJsZSA9IHsg
MiwgMywgdHJ1ZSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OmluZm8oKSwgSlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBD
bGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSIsICZCYXNlOjpzX2luZm8sICZK
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90
eXBlKSB9OwogCiB2b2lkIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHJl
dmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDExICs4OSwxNCBAQCBw
cml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVi
bGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSwg
SlNUZXN0SXRlcmFibGVQcm90b3R5cGU6OkJhc2UpOwogCiB1c2luZyBKU1Rlc3RJdGVyYWJsZURP
TUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0SXRl
cmFibGU+OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdEl0ZXJhYmxlRE9NQ29u
c3RydWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJdGVyYWJsZURPTUNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0SXRlcmFibGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdEl0ZXJhYmxlRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBs
YXRlPD4gSlNWYWx1ZSBKU1Rlc3RJdGVyYWJsZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCkBAIC0xMDksNyArMTEyLDI4IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJdGVyYWJsZURP
TUNvbnN0cnUKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUg
Ki8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0SXRlcmFibGVQcm90b3R5cGVUYWJsZUluZGV4WzE3XSA9
IHsKKyAgICB7IDMsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDQsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIDE2IH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9
LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SXRlcmFibGVQcm90
b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKQEAgLTEyMCwxMyArMTQ0LDE2IEBAIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJdGVyYWIKICAgICB7ICJmb3JFYWNoIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJdGVy
YWJsZVByb3RvdHlwZUZ1bmN0aW9uX2ZvckVhY2gpLCAoaW50cHRyX3QpICgxKSB9IH0sCiB9Owog
Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0SXRlcmFibGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRl
c3RJdGVyYWJsZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0SXRlcmFibGVQcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRh
YmxlIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlVGFibGUgPSB7IDUsIDE1LCB0cnVlLCBKU1Rlc3RJ
dGVyYWJsZTo6aW5mbygpLCBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rl
c3RJdGVyYWJsZVByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RJ
dGVyYWJsZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEl0ZXJhYmxlIiwgJkJhc2U6OnNfaW5m
bywgJkpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0SXRlcmFibGVQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0SXRlcmFibGVQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RJdGVyYWJsZTo6
aW5mbygpLCBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgp
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CisgICAgYXV0byYgZW50cmllcyA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmVudHJpZXNQdWJsaWNOYW1lKCk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaW5mbygp
LCBlbnRyaWVzLCAqaW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShlbnRyaWVzKSwg
KnRoaXMpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCwgZ2V0RGlyZWN0KHZtLCBlbnRyaWVzKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RP
X1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTEgKzgzLDE0IEBAIHByaXZhdGU6CiAg
ICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBl
LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3IgPSBKU0RPTUJ1aWx0aW5Db25z
dHJ1Y3RvcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj47CiAKK3RlbXBsYXRlPD4gY29uc3Qg
dW5zaWduZWQgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6U3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JET01Db25z
dHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29u
c3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEwOCwxOSArMTExLDQyIEBA
IHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU1Rlc3RKU0IKICAgICByZXR1cm4gdGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9ySW5pdGlhbGl6ZVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNv
ZGVHZW5lcmF0b3Iodm0pOwogfQogCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKy8q
IEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBh
Y3RIYXNoSW5kZXggSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVUYWJsZUluZGV4
WzE4XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwg
MTcgfSwKKyAgICB7IDEsIDE2IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgNCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAz
LCAtMSB9LAorICAgIHsgNSwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7
CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAidGVzdEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkJ1aWx0aW4pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
QnVpbHRpbkdlbmVyYXRvcj4odGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUNv
ZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpIChzZXRUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0
QXR0cmlidXRlQ29kZUdlbmVyYXRvcikgfSB9LAotICAgIHsgInRlc3RBdHRyaWJ1dGVDdXN0b20i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JfdGVzdEF0dHJpYnV0ZUN1c3RvbSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJ0ZXN0QXR0cmlidXRlUldDdXN0
b20iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yX3Rlc3RBdHRyaWJ1dGVSV0N1c3RvbSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yX3Rlc3RBdHRyaWJ1dGVSV0N1c3RvbSkgfSB9LAorICAgIHsg
InRlc3RBdHRyaWJ1dGVDdXN0b20iLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
X3Rlc3RBdHRyaWJ1dGVDdXN0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAidGVzdEF0dHJpYnV0ZVJX
Q3VzdG9tIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JfdGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JfdGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKSB9IH0sCiAgICAgeyAidGVzdEZ1bmN0aW9uIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW4pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4odGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yVGVzdEZ1bmN0aW9uQ29kZUdlbmVyYXRvciksIChpbnRwdHJfdCkg
KDApIH0gfSwKICAgICB7ICJ0ZXN0Q3VzdG9tRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25fdGVzdEN1c3RvbUZ1bmN0aW9uKSwgKGludHB0cl90KSAo
MCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlID0geyA2LCAxNSwgdHJ1ZSwgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmluZm8oKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5
cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNl
OjpzX2luZm8sICZKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90
eXBlKSB9OwogCiB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgxLDEyICs4MSwxNSBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6
SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUsIEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbkRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGU8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPjsKIHVzaW5nIEpTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IEpTRE9NTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj47CiAKK3RlbXBsYXRlPD4gY29uc3Qg
dW5zaWduZWQgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRE9NQ29uc3RydWN0b3I6OlN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25ET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRE9N
Q29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTUwLDE0ICsxNTMs
MjEgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdAogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBm
b3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGVUYWJsZUluZGV4WzJdID0geworICAg
IHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNb
XSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlKSB9Oworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGVUYWJs
ZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjppbmZvKCksIEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8g
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvblByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkocmV2aXNp
b24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksMjQg
Kzk5LDQ4IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
OwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFBy
b3RvdHlwZTo6QmFzZSk7CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFz
aCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZVRhYmxlSW5kZXhb
MTddID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAyLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDQsIC0xIH0sCisgICAgeyA1LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA3LCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAzLCAxNiB9LAorICAgIHsgMCwgLTEgfSwKKyAgICB7IDYsIC0x
IH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgInJlYWRvbmx5
U3RyaW5nQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0X3JlYWRvbmx5U3RyaW5nQXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAg
IHsgInJlYWRXcml0ZVN0cmluZ0F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Rf
cmVhZFdyaXRlU3RyaW5nQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Rf
cmVhZFdyaXRlU3RyaW5nQXR0cmlidXRlKSB9IH0sCi0gICAgeyAiY3VzdG9tR2V0dGVyU2V0dGVy
U3RyaW5nQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdF9jdXN0b21HZXR0ZXJT
ZXR0ZXJTdHJpbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdF9jdXN0
b21HZXR0ZXJTZXR0ZXJTdHJpbmdBdHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJub2RlQXR0cmlidXRl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdF9ub2RlQXR0cmlidXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3Rfbm9kZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgInJlYWRvbmx5U3Ry
aW5nQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdF9yZWFk
b25seVN0cmluZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJyZWFkV3JpdGVTdHJpbmdB
dHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdF9yZWFkV3JpdGVTdHJpbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdF9yZWFkV3JpdGVTdHJpbmdBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJjdXN0
b21HZXR0ZXJTZXR0ZXJTdHJpbmdBdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdF9jdXN0b21HZXR0ZXJTZXR0ZXJTdHJp
bmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdF9jdXN0b21HZXR0ZXJT
ZXR0ZXJTdHJpbmdBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJub2RlQXR0cmlidXRlIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Rfbm9k
ZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0X25vZGVBdHRyaWJ1dGUp
IH0gfSwKICAgICB7ICJ2b2lkT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVj
dFByb3RvdHlwZUZ1bmN0aW9uX3ZvaWRPcGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAg
ICAgeyAiY3VzdG9tT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3Rv
dHlwZUZ1bmN0aW9uX2N1c3RvbU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7
ICJDT05TVEFOVDEiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25z
dGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKLSAgICB7ICJD
T05TVEFOVDIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFu
dEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKKyAgICB7ICJDT05T
VEFOVDEiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudElu
dGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKKyAgICB7ICJDT05TVEFO
VDIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVn
ZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0gfSwKIH07CiAKLWNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFBy
b3RvdHlwZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3RQcm90b3R5cGVUYWJsZSA9IHsgOCwgMTUsIHRydWUsIEpTVGVzdExlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0OjppbmZvKCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90
eXBlVGFibGVWYWx1ZXMsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlVGFi
bGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiLCAmQmFz
ZTo6c19pbmZvLCAmSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGVUYWJsZSwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVj
dFByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NywxMSArODcsMTQgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlw
ZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5n
IEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OwogCit0
ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01D
b25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQpAQCAtMTA3LDcgKzExMCwxNSBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBl
ICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVU
YWJsZUluZGV4WzRdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogewpAQCAtMTE1LDcgKzEyNiw4IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RMZWdhY3kKICAgICB7ICJuYW1lZEl0ZW0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQ
cm90b3R5cGVGdW5jdGlvbl9uYW1lZEl0ZW0pLCAoaW50cHRyX3QpICgxKSB9IH0sCiB9OwogCi1j
b25zdCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6c19p
bmZvID0geyAiVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6aW5mbygpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVU
YWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
c1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFz
ZTo6c19pbmZvLCAmSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQ
cm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkocmV2
aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxMSArOTYsMTQgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlwZSwgSlNU
ZXN0TWFwTGlrZVByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdE1hcExpa2VET01Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE1hcExpa2U+
OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdE1hcExpa2VET01Db25zdHJ1Y3Rv
cjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExpa2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dE1hcExpa2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE1hcExpa2VET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdE1hcExpa2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTE2
LDMwICsxMTksNzAgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE1hcExpa2VET01Db25zdHJ1Ywog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFz
aCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3RNYXBMaWtlUHJvdG90eXBlVGFibGVJbmRleFszM10gPSB7CisgICAgeyA2
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA1LCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDgsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAzLCAtMSB9LAorICAgIHsgMTAsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNywgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgMCwgMzIgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgOSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgNCwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE1hcExpa2VQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAot
ICAgIHsgInNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RNYXBMaWtlX3Np
emUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCi0gICAgeyAiZ2V0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9nZXQpLCAoaW50cHRyX3QpICgxKSB9IH0s
Ci0gICAgeyAiaGFzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1h
cExpa2VQcm90b3R5cGVGdW5jdGlvbl9oYXMpLCAoaW50cHRyX3QpICgxKSB9IH0sCi0gICAgeyAi
ZW50cmllcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25fZW50cmllcyksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJr
ZXlzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1hcExpa2VQcm90
b3R5cGVGdW5jdGlvbl9rZXlzKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgInZhbHVlcyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25fdmFsdWVzKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgInNpemUiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IsIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0TWFwTGlrZV9zaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgImdldCIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24s
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2dldCksIChpbnRwdHJfdCkgKDEpIH0gfSwK
KyAgICB7ICJoYXMiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9o
YXMpLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAiZW50cmllcyIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXMpLCAoaW50cHRyX3QpICgwKSB9IH0s
CisgICAgeyAia2V5cyIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
X2tleXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidmFsdWVzIiwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fdmFsdWVzKSwgKGludHB0cl90KSAoMCkgfSB9
LAogICAgIHsgImZvckVhY2giLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9mb3JFYWNo
KSwgKGludHB0cl90KSAoMSkgfSB9LAotICAgIHsgInNldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fc2V0KSwgKGludHB0
cl90KSAoMikgfSB9LAotICAgIHsgImNsZWFyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9jbGVhciksIChpbnRwdHJfdCkg
KDApIH0gfSwKLSAgICB7ICJkZWxldGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2RlbGV0ZSksIChpbnRwdHJfdCkgKDEp
IH0gfSwKKyAgICB7ICJzZXQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1hcExpa2VQcm90b3R5cGVGdW5j
dGlvbl9zZXQpLCAoaW50cHRyX3QpICgyKSB9IH0sCisgICAgeyAiY2xlYXIiLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9jbGVhciksIChpbnRwdHJfdCkgKDApIH0g
fSwKKyAgICB7ICJkZWxldGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1hcExpa2VQcm90b3R5cGVGdW5j
dGlvbl9kZWxldGUpLCAoaW50cHRyX3QpICgxKSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0luZm8g
SlNUZXN0TWFwTGlrZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE1hcExpa2UiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1hcExp
a2VQcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE1hcExpa2VQcm90
b3R5cGVUYWJsZSA9IHsgMTEsIDMxLCB0cnVlLCBKU1Rlc3RNYXBMaWtlOjppbmZvKCksIEpTVGVz
dE1hcExpa2VQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0TWFwTGlrZVByb3RvdHlwZVRhYmxl
SW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RNYXBMaWtlUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0TWFwTGlrZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RNYXBMaWtlUHJvdG90eXBl
VGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlw
ZSkgfTsKIAogdm9pZCBKU1Rlc3RNYXBMaWtlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0TWFwTGlrZTo6aW5mbygpLCBKU1Rlc3RNYXBMaWtlUHJvdG90eXBl
VGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBhdXRvJiBlbnRyaWVzID0gdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKTsKKyAgICByZWlm
eVN0YXRpY1Byb3BlcnR5KHZtLCBpbmZvKCksIGVudHJpZXMsICppbmZvKCktPnN0YXRpY1Byb3BI
YXNoVGFibGUtPmVudHJ5KGVudHJpZXMpLCAqdGhpcyk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qo
dm0sIGVudHJpZXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04o
KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTEgKzEwMCwxNCBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zUHJvdG90eXBlLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJv
dG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9uc0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz47CiAKK3RlbXBsYXRlPD4gY29uc3Qg
dW5zaWduZWQgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVj
dG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0RPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVjdG9yKSB9Owog
CiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xMjAsMzAgKzEyMyw3MCBAQCB0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkCiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0K
IAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90
b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE1h
cExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVUYWJsZUluZGV4WzMzXSA9IHsK
KyAgICB7IDgsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDcsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDUsIC0xIH0sCisgICAgeyAxMCwgLTEgfSwKKyAgICB7IDIsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA5LCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAzMiB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAzLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA2LCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1By
b3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0g
ICAgeyAic2V0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zX3NldCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNfc2V0KSB9IH0sCi0gICAgeyAic2l6ZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJzZXQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zX3NldCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNfc2V0KSB9IH0sCisgICAgeyAic2l6ZSIs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zX3NpemUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9
IH0sCiAgICAgeyAiY2xlYXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQ
cm90b3R5cGVGdW5jdGlvbl9jbGVhciksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJnZXQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2dldCksIChpbnRwdHJfdCkgKDEpIH0g
fSwKLSAgICB7ICJoYXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2hhcyksIChp
bnRwdHJfdCkgKDEpIH0gfSwKLSAgICB7ICJlbnRyaWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5
cGVGdW5jdGlvbl9lbnRyaWVzKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgImtleXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2tleXMpLCAoaW50cHRyX3QpICgwKSB9IH0s
Ci0gICAgeyAidmFsdWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl92YWx1ZXMp
LCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiZ2V0IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RNYXBM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fZ2V0KSwgKGludHB0
cl90KSAoMSkgfSB9LAorICAgIHsgImhhcyIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2hhcyksIChpbnRwdHJfdCkgKDEp
IH0gfSwKKyAgICB7ICJlbnRyaWVzIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fZW50cmllcyksIChpbnRwdHJfdCkgKDAp
IH0gfSwKKyAgICB7ICJrZXlzIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fa2V5cyksIChpbnRwdHJfdCkgKDApIH0gfSwK
KyAgICB7ICJ2YWx1ZXMiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl92YWx1ZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAg
ICAgeyAiZm9yRWFjaCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oanNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3Rv
dHlwZUZ1bmN0aW9uX2ZvckVhY2gpLCAoaW50cHRyX3QpICgxKSB9IH0sCi0gICAgeyAiZGVsZXRl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE1hcExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9kZWxldGUpLCAoaW50cHRyX3QpICgx
KSB9IH0sCisgICAgeyAiZGVsZXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fZGVsZXRlKSwgKGludHB0cl90KSAoMSkg
fSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlKSB9
Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zUHJvdG90eXBlVGFibGUgPSB7IDExLCAzMSwgdHJ1ZSwgSlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9uczo6aW5mbygpLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnNQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQ
cm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OmluZm8oKSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2V0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
YXV0byYgZW50cmllcyA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQ
dWJsaWNOYW1lKCk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaW5mbygpLCBlbnRyaWVz
LCAqaW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShlbnRyaWVzKSwgKnRoaXMpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvclN5bWJvbCwgZ2V0RGlyZWN0KHZtLCBlbnRyaWVzKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX1RPX1NUUklOR19U
QUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lv
biAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODAsMTEgKzgwLDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXI+OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEwMCwxNCArMTAzLDIxIEBAIHRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXQKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0vKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlVGFibGVJbmRleFsyXSA9IHsKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMCwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLWNvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSkgfTsKK3N0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90
eXBlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllcjo6aW5mbygpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQ
cm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyUHJvdG90eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQ
cm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDExICs4MCwxNCBAQCBwcml2YXRlOgogICAg
IH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvblByb3RvdHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Qcm90b3R5cGU6OkJhc2UpOwogCiB1c2luZyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+
OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBs
YXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xMDAsMTQgKzEwMywyMSBAQCB0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0K
IAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90
b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlVGFibGVJbmRleFsy
XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKK307CisKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlVGFibGUg
PSB7IDEsIDEsIHRydWUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uOjppbmZvKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
UHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uUHJvdG90eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19p
bmZvLCAmSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMSAr
ODksMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyPjsKIAordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTA5LDcgKzExMiwyMCBAQCB0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyog
SGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUg
Ki8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVJbmRleFs5XSA9IHsKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgMCwgOCB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDIsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKQEAgLTExOCw3ICsxMzQsOCBAQCBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRBCiAgICAgeyAiaW5kZXhlZFNldHRlciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbl9pbmRl
eGVkU2V0dGVyKSwgKGludHB0cl90KSAoMikgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlw
ZVRhYmxlID0geyAzLCA3LCB0cnVlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcjo6aW5mbygpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgJkpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGUsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCShy
ZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzksMTEgKzc5LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2ln
bmVkIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
ZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTk5
LDE0ICsxMDIsMjEgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbgog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFz
aCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZUluZGV4
WzJdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorfTsKKwogCiBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZv
ID0geyAiVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyOjppbmZvKCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
ZmllclByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQ
cm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclBy
b3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzksMTEgKzc5LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0
aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bj47CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25ET01D
b25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTk5LDE0
ICsxMDIsMjEgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aQogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0
YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZVRhYmxlSW5k
ZXhbMl0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCit9OworCiAKIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
blByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAog
fTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24i
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKSB9Oworc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlw
ZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6aW5mbygpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZVRh
YmxlVmFsdWVzLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZVRh
YmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODYsMTEgKzg2LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj47CiAK
K3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXJET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3RvcikgfTsKIAog
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyRE9NQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEwNiw3ICsxMDksMTUgQEAgdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICov
CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDAsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCit9Owor
CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewpAQCAtMTE0LDcgKzEyNSw4IEBAIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZEQKICAgICB7ICJuYW1lZERlbGV0
ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25fbmFt
ZWREZWxldGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
UHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllcjo6aW5mbygpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODAsMTEgKzgwLDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBl
LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZTo6QmFzZSk7CiAK
IHVzaW5nIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlcj47CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXJET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKQEAgLTEwMCwxNCArMTAzLDIxIEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW4KICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUg
Ki8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90
b3R5cGVUYWJsZUluZGV4WzJdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAor
fTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJjb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSkg
fTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXJQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXI6OmluZm8oKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXJQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXJQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlclByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlKSB9OwogCiB2
b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGguY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDExICs3OSwxNCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGlj
UHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoUHJvdG90eXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aERP
TUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFt
ZWRHZXR0ZXJDYWxsV2l0aD47CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0TmFt
ZWRHZXR0ZXJDYWxsV2l0aERPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aERPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aERPTUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCkBAIC05OSwxNCArMTAyLDIxIEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RO
YW1lZEdldHRlckNhbGxXaXQKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0vKiBIYXNoIHRhYmxlIGZvciBw
cm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitzdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3Rv
dHlwZVRhYmxlSW5kZXhbMl0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCit9
OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLWNv
bnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3Rv
dHlwZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aFByb3RvdHlwZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
OjppbmZvKCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGVUYWJsZVZhbHVlcywg
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoUHJvdG90eXBlOjpzX2luZm8gPSB7ICJU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9u
IDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDExICs3
OSwxNCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
IH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllclByb3RvdHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90
b3R5cGU6OkJhc2UpOwogCiB1c2luZyBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckRPTUNv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXI+OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0
b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
ckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC05OSwxNCArMTAyLDIxIEBAIHRl
bXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnQKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQog
Ci0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3Rv
dHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZUluZGV4WzJdID0geworICAgIHsgLTEs
IC0xIH0sCisgICAgeyAwLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
IHsKICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSkgfTsKK3N0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5
cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6Omlu
Zm8oKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlcywg
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25z
dCBDbGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sICZKU1Rl
c3ROYW1lZEdldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKSB9Owog
CiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDExICs4NCwxNCBAQCBwcml2YXRlOgogICAgIH0KIAog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBK
U1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcg
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj47
CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
ZmllckRPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
ZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
ZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiB0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xMDQsNyArMTA3LDE1IEBAIHRlbXBsYXRlPD4g
dm9pZCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGUKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0vKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLwor
CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IDAsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCit9OworCiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CkBAIC0xMTIsNyArMTIzLDggQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkRwogICAgIHsgImdldHRlck5hbWUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbl9nZXR0ZXJOYW1l
KSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlKSB9
Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
UHJvdG90eXBlVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXI6OmluZm8oKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRh
YmxlVmFsdWVzLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVJ
bmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyIiwgJkJh
c2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVUYWJs
ZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjc5NTAzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTEgKzc5LDE0IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJs
aWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyUHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6QmFz
ZSk7CiAKIHVzaW5nIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllcj47CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0TmFtZWRTZXR0ZXJO
b0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3RvcikgfTsKIAog
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTk5LDE0ICsxMDIsMjEgQEAgdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2gg
dGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisK
K3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllclByb3RvdHlwZVRhYmxlSW5kZXhbMl0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDAsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlID0g
eyAxLCAxLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6aW5mbygpLCBKU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5m
byBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksMTEgKzc5LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OkJhc2UpOwogCiB1
c2luZyBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uPjsKIAordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
RE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTk5
LDE0ICsxMDIsMjEgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbgog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFz
aCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlVGFibGVJ
bmRleFsyXSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKK307CisKIAogc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAog
fTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Q
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlVGFi
bGUgPSB7IDEsIDEsIHRydWUsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Omlu
Zm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZVRhYmxlVmFs
dWVzLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlVGFibGVJbmRl
eCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Q
cm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5
cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJl
dmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODYsMTEgKzg2LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCiB1c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPjsKIAordGVtcGxhdGU8PiBjb25zdCB1
bnNpZ25lZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OlN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKQEAgLTEwNiw3ICsxMDksMTYgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZQogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
LworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg
Q29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
VGFibGVJbmRleFs1XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgNCB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCit9OworCiAKIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CkBAIC0xMTQsNyArMTI2LDggQEAgc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkUwogICAgIHsgIm5hbWVkU2V0dGVyIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25fbmFtZWRTZXR0ZXIpLCAo
aW50cHRyX3QpICgyKSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUpIH07Citz
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGVUYWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVW
YWx1ZXMsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVUYWJsZUluZGV4
IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6
c19pbmZvLCAmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxlLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXJQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjc5
NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMSAr
ODksMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlclByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+OwogCit0ZW1wbGF0ZTw+IGNv
bnN0IHVuc2lnbmVkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1
Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTA5LDcgKzExMiwyMCBAQCB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0
YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KKwor
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVUYWJsZUluZGV4WzldID0geworICAgIHsgLTEsIC0xIH0s
CisgICAgeyAwLCA4IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
MiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDEsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
CiB7CkBAIC0xMTgsNyArMTM0LDggQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dE5hbWVkUwogICAgIHsgImluZGV4ZWRTZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbl9pbmRleGVkU2V0dGVyKSwgKGludHB0cl90KSAoMSkg
fSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlKSB9Oworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90
eXBlVGFibGUgPSB7IDMsIDcsIHRydWUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXI6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZVRh
YmxlVmFsdWVzLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlVGFi
bGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQ
cm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMTEgKzg5LDE0IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Citw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGU6OkJhc2UpOwogCiB1c2luZyBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyPjsKIAordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyRE9NQ29uc3RydWN0b3I6OlN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyRE9NQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyRE9NQ29uc3RydWN0b3IpIH07CiAK
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEwOSw3ICsxMTIsMjAg
QEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZAogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3Ig
UHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlVGFibGVJbmRl
eFs5XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgOCB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorfTsKKwogCiBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewpAQCAtMTE4LDcgKzEzNCw4IEBA
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFMKICAgICB7ICJpbmRleGVk
U2V0dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90
eXBlRnVuY3Rpb25faW5kZXhlZFNldHRlciksIChpbnRwdHJfdCkgKDEpIH0gfSwKIH07CiAKLWNv
bnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlw
ZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlclByb3RvdHlwZVRhYmxlID0geyAzLCA3LCB0cnVlLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZVRhYmxlSW5kZXgg
fTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlw
ZSkgfTsKIAogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDExICs3OSwxNCBAQCBwcml2YXRlOgogICAgIH0KIAog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz47CiAKK3RlbXBs
YXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0RPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCkBAIC05OSwxNCArMTAyLDIxIEBAIHRlbXBsYXRlPD4gdm9pZCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWcKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0vKiBIYXNoIHRhYmxl
IGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitzdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlSW5kZXhbMl0gPSB7CisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDAsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFi
bGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAK
LWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3Rv
dHlwZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjppbmZvKCksIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlSW5k
ZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3Rv
dHlwZSkgfTsKIAogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDI4ICs4OCwxNCBAQCBw
cml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVi
bGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0RPTUNvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjsKIAotLyogSGFzaCB0YWJsZSAqLwotCi1zdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGVJbmRleFs0XSA9IHsKLSAgICB7IC0xLCAtMSB9
LAotICAgIHsgMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgLTEgfSwKLX07Ci0K
LQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlVmFsdWVzW10gPQotewotICAgIHsgInVuZm9yZ2Vh
YmxlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNfdW5mb3JnZWFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAidW5m
b3JnZWFibGVPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0luc3RhbmNlRnVuY3Rpb25fdW5mb3JnZWFibGVPcGVy
YXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCi19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlID0g
eyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc1RhYmxlSW5kZXggfTsKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzRE9NQ29uc3RydWN0b3I6
OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTI1LDE0ICsxMTEsMjEgQEAgdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUg
Zm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRp
YyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGVUYWJsZUluZGV4WzJdID0geworICAgIHsg
LTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90
b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGVUYWJsZUluZGV4IH07Citj
b25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc1Byb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
QEAgLTE0MSw3ICsxMzQsMjQgQEAgdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYQogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCi1j
b25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcykgfTsKKy8qIEhh
c2ggdGFibGUgZm9yIEluc3RhbmNlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNJ
bnN0YW5jZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCit9OworCisKK3N0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNJbnN0YW5jZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgInVuZm9yZ2VhYmxlQXR0cmli
dXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzX3VuZm9yZ2VhYmxlQXR0
cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdW5jdGlvbl91bmZvcmdl
YWJsZU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKK307CisKK3N0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
SW5zdGFuY2VUYWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0luc3RhbmNlVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0luc3RhbmNlVGFibGVJbmRleCB9Owor
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllczo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNJbnN0YW5jZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcykg
fTsKIAogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzPiYmIGltcGwpCiAgICAgOiBK
U0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
cz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg4LDI4ICs4OCwxNCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJv
cGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpCYXNlKTsK
IAogdXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz47CiAKLS8qIEhhc2ggdGFibGUgKi8K
LQotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNU
YWJsZUluZGV4WzRdID0gewotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxLCAtMSB9LAotICAgIHsg
LTEsIC0xIH0sCi0gICAgeyAwLCAtMSB9LAotfTsKLQotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1RhYmxlVmFsdWVzW10gPQotewotICAgIHsgInVuZm9yZ2Vh
YmxlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zX3VuZm9yZ2VhYmxlQXR0
cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAotICAgIHsgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zSW5zdGFuY2VGdW5jdGlvbl91bmZvcmdlYWJsZU9wZXJhdGlvbiks
IChpbnRwdHJfdCkgKDApIH0gfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1RhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjppbmZvKCks
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnNUYWJsZVZhbHVlcywgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1RhYmxlSW5kZXgg
fTsKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVj
dG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCkBAIC0xMjUsMTQgKzExMSwyMSBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90
eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJsZUluZGV4
WzJdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorfTsKKwogCiBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1By
b3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5
cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVU
YWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6aW5mbygpLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGVUYWJs
ZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6c19p
bmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogewpAQCAtMTQxLDcgKzEzNCwyNCBAQCB2b2lkIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhCiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9V
VF9UUkFOU0lUSU9OKCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpz
X2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucykg
fTsKKy8qIEhhc2ggdGFibGUgZm9yIEluc3RhbmNlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg
Q29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zSW5zdGFuY2VUYWJsZUluZGV4WzRdID0g
eworICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAwLCAtMSB9LAorfTsKKworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0luc3RhbmNlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAidW5mb3JnZWFibGVBdHRy
aWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zX3VuZm9yZ2VhYmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgInVu
Zm9yZ2VhYmxlT3BlcmF0aW9uIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlRnVuY3Rpb25fdW5mb3JnZWFibGVP
cGVyYXRpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCit9OworCitzdGF0aWMgY29uc3QgSGFzaFRh
YmxlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNJbnN0YW5jZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNJbnN0YW5jZVRhYmxlVmFsdWVzLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zSW5zdGFuY2VUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdEluczo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZv
LCAmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0luc3RhbmNlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucykgfTsKIAogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXI8VGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFj
ZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwyNiArNzUsODYgQEAgc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0TgogCiB1c2luZyBKU1Rlc3ROYW1lc3BhY2VPYmpl
Y3RET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZTxKU1Rlc3ROYW1l
c3BhY2VPYmplY3Q+OwogCi0vKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLworI2lmIEVO
QUJMRShDb25kaXRpb24xKQorc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0TmFtZXNwYWNlT2Jq
ZWN0Q29uc3RydWN0b3JfbmFtZXNwYWNlQXR0cmlidXRlRnJvbVBhcnRpYWwoVk0mIHZtLCBKU09i
amVjdCopCit7CisgICAgcmV0dXJuIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rl
c3ROYW1lc3BhY2VPYmplY3RDb25zdHJ1Y3Rvcl9uYW1lc3BhY2VBdHRyaWJ1dGVGcm9tUGFydGlh
bCwgbnVsbHB0cik7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdE5hbWVzcGFjZU9i
amVjdENvbnN0cnVjdG9yX25hbWVzcGFjZUF0dHJpYnV0ZUZyb21QYXJ0aWFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7Cisg
ICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzFFbmFibGVk
OworfQorI2VuZGlmCisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdE5hbWVzcGFjZU9iamVj
dENvbnN0cnVjdG9yX2VuYWJsZWRCeVNldHRpbmdOYW1lc3BhY2VPcGVyYXRpb24oVk0mIHZtLCBK
U09iamVjdCogdGhpc09iamVjdCkKK3sKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgMCwgImVuYWJsZWRCeVNldHRpbmdOYW1lc3Bh
Y2VPcGVyYXRpb24iX3MsIGpzVGVzdE5hbWVzcGFjZU9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25f
ZW5hYmxlZEJ5U2V0dGluZ05hbWVzcGFjZU9wZXJhdGlvbik7Cit9CisKK3N0YXRpYyBib29sIGlz
RW5hYmxlZEpTVGVzdE5hbWVzcGFjZU9iamVjdENvbnN0cnVjdG9yX2VuYWJsZWRCeVNldHRpbmdO
YW1lc3BhY2VPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5n
c1ZhbHVlcygpLnRlc3RTZXR0aW5nMkVuYWJsZWQ7Cit9CisKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdE5hbWVzcGFjZU9iamVjdENvbnN0cnVjdG9y
X25hbWVzcGFjZU9wZXJhdGlvbkZyb21QYXJ0aWFsKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmpl
Y3QpCit7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xv
YmFsT2JqZWN0KCksIDAsICJuYW1lc3BhY2VPcGVyYXRpb25Gcm9tUGFydGlhbCJfcywganNUZXN0
TmFtZXNwYWNlT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbl9uYW1lc3BhY2VPcGVyYXRpb25Gcm9t
UGFydGlhbCk7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdE5hbWVzcGFjZU9iamVj
dENvbnN0cnVjdG9yX25hbWVzcGFjZU9wZXJhdGlvbkZyb21QYXJ0aWFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAg
cmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzFFbmFibGVkOwor
fQorI2VuZGlmCisKKy8qIEhhc2ggdGFibGUgZm9yIENvbnN0cnVjdG9yICovCisKK3N0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3ROYW1lc3BhY2VPYmplY3RDb25zdHJ1
Y3RvclRhYmxlSW5kZXhbMTddID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IDEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDMsIDE2IH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDIsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwg
LTEgfSwKKyAgICB7IDQsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3ROYW1lc3BhY2VPYmplY3RDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogewotICAg
IHsgIm5hbWVzcGFjZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZXNwYWNlT2JqZWN0Q29u
c3RydWN0b3JfbmFtZXNwYWNlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIm5hbWVzcGFjZUF0dHJp
YnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZXNwYWNlT2JqZWN0Q29u
c3RydWN0b3JfbmFtZXNwYWNlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAogI2lmIEVOQUJMRShDb25k
aXRpb24xKQotICAgIHsgIm5hbWVzcGFjZUF0dHJpYnV0ZUZyb21QYXJ0aWFsIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3ROYW1lc3BhY2VPYmplY3RDb25zdHJ1Y3Rvcl9uYW1lc3BhY2VBdHRyaWJ1dGVGcm9tUGFy
dGlhbCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKKyAgICB7ICJuYW1lc3BhY2VBdHRyaWJ1dGVGcm9tUGFydGlhbCIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+
KGNyZWF0ZUpTVGVzdE5hbWVzcGFjZU9iamVjdENvbnN0cnVjdG9yX25hbWVzcGFjZUF0dHJpYnV0
ZUZyb21QYXJ0aWFsKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJs
ZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0TmFtZXNwYWNlT2JqZWN0Q29uc3RydWN0b3JfbmFt
ZXNwYWNlQXR0cmlidXRlRnJvbVBhcnRpYWwpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0lu
dHJpbnNpYywgeyAwLCAwIH0gfSwKICNlbmRpZgogICAgIHsgIm92ZXJsb2FkZWROYW1lc3BhY2VP
cGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE5hbWVzcGFjZU9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25fb3Zlcmxv
YWRlZE5hbWVzcGFjZU9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDEpIH0gfSwKLSAgICB7ICJlbmFi
bGVkQnlTZXR0aW5nTmFtZXNwYWNlT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROYW1lc3BhY2VPYmplY3RDb25z
dHJ1Y3RvckZ1bmN0aW9uX2VuYWJsZWRCeVNldHRpbmdOYW1lc3BhY2VPcGVyYXRpb24pLCAoaW50
cHRyX3QpICgwKSB9IH0sCisgICAgeyAiZW5hYmxlZEJ5U2V0dGluZ05hbWVzcGFjZU9wZXJhdGlv
biIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0
eUNhbGxiYWNrKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9w
ZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3ROYW1lc3BhY2VPYmplY3RDb25zdHJ1Y3Rvcl9lbmFi
bGVkQnlTZXR0aW5nTmFtZXNwYWNlT3BlcmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJ
c0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0TmFtZXNwYWNlT2Jq
ZWN0Q29uc3RydWN0b3JfZW5hYmxlZEJ5U2V0dGluZ05hbWVzcGFjZU9wZXJhdGlvbikgfSB9LAog
I2lmIEVOQUJMRShDb25kaXRpb24xKQotICAgIHsgIm5hbWVzcGFjZU9wZXJhdGlvbkZyb21QYXJ0
aWFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3ROYW1lc3BhY2VPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uX25hbWVzcGFjZU9w
ZXJhdGlvbkZyb21QYXJ0aWFsKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm5hbWVzcGFj
ZU9wZXJhdGlvbkZyb21QYXJ0aWFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2spLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdE5hbWVzcGFjZU9i
amVjdENvbnN0cnVjdG9yX25hbWVzcGFjZU9wZXJhdGlvbkZyb21QYXJ0aWFsKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNU
ZXN0TmFtZXNwYWNlT2JqZWN0Q29uc3RydWN0b3JfbmFtZXNwYWNlT3BlcmF0aW9uRnJvbVBhcnRp
YWwpIH0gfSwKICNlbHNlCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKICNl
bmRpZgogfTsKIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZXNwYWNlT2Jq
ZWN0RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VOYW1lIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
c3BhY2VPYmplY3RET01Db25zdHJ1Y3RvcikgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNU
ZXN0TmFtZXNwYWNlT2JqZWN0Q29uc3RydWN0b3JUYWJsZSA9IHsgNSwgMTUsIHRydWUsIG51bGxw
dHIsIEpTVGVzdE5hbWVzcGFjZU9iamVjdENvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIEpTVGVzdE5h
bWVzcGFjZU9iamVjdENvbnN0cnVjdG9yVGFibGVJbmRleCB9OwordGVtcGxhdGU8PiBjb25zdCB1
bnNpZ25lZCBKU1Rlc3ROYW1lc3BhY2VPYmplY3RET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
K3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVzcGFjZU9iamVjdERPTUNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlTmFtZSIsICZCYXNlOjpzX2luZm8sICZK
U1Rlc3ROYW1lc3BhY2VPYmplY3RDb25zdHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVzcGFjZU9iamVjdERPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZXNwYWNlT2JqZWN0RE9NQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKQEAgLTEwNCwzMCArMTY0LDkgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdE5hbWVzcGFjZU9iamVjdAogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZXNwYWNlT2Jq
ZWN0RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0
KTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLSAgICByZWlm
eVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE5hbWVzcGFjZU9iamVjdDo6aW5mbygpLCBKU1Rl
c3ROYW1lc3BhY2VPYmplY3RDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0jaWYgRU5B
QkxFKENvbmRpdGlvbjEpCi0gICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xv
YmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLnRl
c3RTZXR0aW5nMUVuYWJsZWQpIHsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm5hbWVz
cGFjZUF0dHJpYnV0ZUZyb21QYXJ0aWFsIiksIHN0cmxlbigibmFtZXNwYWNlQXR0cmlidXRlRnJv
bVBhcnRpYWwiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2
bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSNlbmRp
ZgotICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0U2V0dGluZzJFbmFi
bGVkKSB7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nTmFt
ZXNwYWNlT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ05hbWVzcGFjZU9wZXJh
dGlvbiIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgfQotI2lmIEVOQUJM
RShDb25kaXRpb24xKQotICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2Jh
bE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS50ZXN0
U2V0dGluZzFFbmFibGVkKSB7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJuYW1lc3Bh
Y2VPcGVyYXRpb25Gcm9tUGFydGlhbCIpLCBzdHJsZW4oIm5hbWVzcGFjZU9wZXJhdGlvbkZyb21Q
YXJ0aWFsIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0jZW5kaWYK
KyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIG51bGxwdHIsIEpTVGVzdE5hbWVzcGFjZU9i
amVjdENvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVzcGFjZU9iamVjdDo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZU5hbWUiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE5hbWVzcGFjZU9iamVjdCkgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJldmlzaW9uIDI3OTUwMykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5vZGVQcm90b3R5cGUsIEpTVGVzdE5vZGVQcm90b3R5cGU6OkJh
c2UpOwogCkBAIC0xMzEsNiArMTMzLDcgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMXwogfQogSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0Tm9kZURPTUNv
bnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7
CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0Tm9kZURPTUNvbnN0cnVjdG9yOjpT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0Tm9kZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Tm9kZSIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0Tm9kZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Tm9k
ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNDUsODggKzE0OCwxNTUgQEAg
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5vZGVET01Db25zdHJ1Y3RvcgogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworc3RhdGljIEpTVmFsdWUgY3JlYXRl
SlNUZXN0Tm9kZVByb3RvdHlwZV9jYWxjdWxhdGVTZWNyZXRSZXN1bHQoVk0mIHZtLCBKU09iamVj
dCogdGhpc09iamVjdCkKK3sKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
T2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgMCwgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCJfcywganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uX2NhbGN1bGF0ZVNlY3JldFJlc3VsdCk7Cit9CisKK3N0
YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdE5vZGVQcm90b3R5cGVfY2FsY3VsYXRlU2VjcmV0UmVz
dWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCk7Cit9
CisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdE5vZGVQcm90b3R5cGVfZ2V0U2VjcmV0Qm9v
bGVhbihWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0KQoreworICAgIHJldHVybiBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCAwLCAiZ2V0U2VjcmV0
Qm9vbGVhbiJfcywganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uX2dldFNlY3JldEJvb2xlYW4p
OworfQorCitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rlc3ROb2RlUHJvdG90eXBlX2dldFNlY3Jl
dEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFS
QU0oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQo
KTsKK30KKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVK
U1Rlc3ROb2RlUHJvdG90eXBlX3Rlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihWTSYgdm0sIEpT
T2JqZWN0KiB0aGlzT2JqZWN0KQoreworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCAwLCAidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29s
ZWFuIl9zLCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25fdGVzdEZlYXR1cmVHZXRTZWNyZXRC
b29sZWFuKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0Tm9kZVByb3RvdHlwZV90
ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gKGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNTZWN1cmVDb250ZXh0KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSk7Cit9CisjZW5kaWYKKworc3RhdGljIEpTVmFs
dWUgY3JlYXRlSlNUZXN0Tm9kZVByb3RvdHlwZV9lbnRyaWVzKFZNJiB2bSwgSlNPYmplY3QqIHRo
aXNPYmplY3QpCit7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCksIDAsICJlbnRyaWVzIl9zLCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVu
Y3Rpb25fZW50cmllcyk7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdE5vZGVQcm90
b3R5cGVfZW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpOworfQorCitzdGF0aWMgSlNW
YWx1ZSBjcmVhdGVKU1Rlc3ROb2RlUHJvdG90eXBlX2tleXMoVk0mIHZtLCBKU09iamVjdCogdGhp
c09iamVjdCkKK3sKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSwgMCwgImtleXMiX3MsIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlv
bl9rZXlzKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0Tm9kZVByb3RvdHlwZV9r
ZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0
ZUpTVGVzdE5vZGVQcm90b3R5cGVfdmFsdWVzKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3Qp
Cit7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xvYmFs
T2JqZWN0KCksIDAsICJ2YWx1ZXMiX3MsIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbl92YWx1
ZXMpOworfQorCitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rlc3ROb2RlUHJvdG90eXBlX3ZhbHVl
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9i
YWxPYmplY3QpOworICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpOworfQorCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVK
U1Rlc3ROb2RlUHJvdG90eXBlX2ZvckVhY2goVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkK
K3sKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSwgMSwgImZvckVhY2giX3MsIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbl9mb3JF
YWNoKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0Tm9kZVByb3RvdHlwZV9mb3JF
YWNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCk7Cit9CisKKy8qIEhhc2ggdGFibGUgZm9yIFBy
b3RvdHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0
Tm9kZVByb3RvdHlwZVRhYmxlSW5kZXhbMzVdID0geworICAgIHsgNCwgMzQgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgOCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyA2LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDUsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDMsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEwLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAwLCAzMiB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgMSwgMzMgfSwKKyAgICB7IDcsIC0xIH0sCisgICAgeyA5LCAtMSB9LAorfTsKKwogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Tm9kZVByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROb2RlQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCi0gICAgeyAibmFtZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Tm9kZV9uYW1lKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Tm9kZV9uYW1lKSB9
IH0sCisgICAgeyAibmFtZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5v
ZGVfbmFtZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdE5vZGVfbmFtZSkgfSB9LAogICAgIHsgInRlc3RXb3JrZXJQcm9taXNl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25fdGVzdFdvcmtlclByb21pc2UpLCAoaW50cHRy
X3QpICgwKSB9IH0sCi0gICAgeyAiY2FsY3VsYXRlU2VjcmV0UmVzdWx0Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3ROb2RlUHJv
dG90eXBlRnVuY3Rpb25fY2FsY3VsYXRlU2VjcmV0UmVzdWx0KSwgKGludHB0cl90KSAoMCkgfSB9
LAotICAgIHsgImdldFNlY3JldEJvb2xlYW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbl9n
ZXRTZWNyZXRCb29sZWFuKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImNhbGN1bGF0ZVNl
Y3JldFJlc3VsdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpQcm9wZXJ0eUNhbGxiYWNrKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PExhenlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3ROb2RlUHJvdG90eXBlX2NhbGN1bGF0
ZVNlY3JldFJlc3VsdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFi
bGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdE5vZGVQcm90b3R5cGVfY2FsY3VsYXRlU2VjcmV0
UmVzdWx0KSB9IH0sCisgICAgeyAiZ2V0U2VjcmV0Qm9vbGVhbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVK
U1Rlc3ROb2RlUHJvdG90eXBlX2dldFNlY3JldEJvb2xlYW4pLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3ROb2RlUHJv
dG90eXBlX2dldFNlY3JldEJvb2xlYW4pIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQot
ICAgIHsgInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uX3Rlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiksIChpbnRwdHJfdCkgKDApIH0gfSwK
KyAgICB7ICJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjayksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNU
ZXN0Tm9kZVByb3RvdHlwZV90ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4pLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rl
c3ROb2RlUHJvdG90eXBlX3Rlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbikgfSB9LAogI2Vsc2UK
ICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCiAgICAgeyAidG9K
U09OIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0
aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25fdG9KU09OKSwgKGludHB0cl90KSAoMCkg
fSB9LAotICAgIHsgImVudHJpZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbl9lbnRyaWVz
KSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgImtleXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvbl9rZXlzKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgInZhbHVlcyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uX3ZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7
ICJmb3JFYWNoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25fZm9yRWFjaCksIChpbnRwdHJf
dCkgKDEpIH0gfSwKKyAgICB7ICJlbnRyaWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2spLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdE5vZGVQ
cm90b3R5cGVfZW50cmllcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlF
bmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdE5vZGVQcm90b3R5cGVfZW50cmllcykgfSB9
LAorICAgIHsgImtleXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UHJvcGVydHlDYWxsYmFjayksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0Tm9kZVByb3RvdHlwZV9rZXlz
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4o
aXNFbmFibGVkSlNUZXN0Tm9kZVByb3RvdHlwZV9rZXlzKSB9IH0sCisgICAgeyAidmFsdWVzIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2Fs
bGJhY2spLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5
Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdE5vZGVQcm90b3R5cGVfdmFsdWVzKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0
Tm9kZVByb3RvdHlwZV92YWx1ZXMpIH0gfSwKKyAgICB7ICJmb3JFYWNoIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2spLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNy
ZWF0ZUpTVGVzdE5vZGVQcm90b3R5cGVfZm9yRWFjaCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdE5vZGVQcm90b3R5
cGVfZm9yRWFjaCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5vZGVQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlRlc3ROb2RlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROb2RlUHJvdG90eXBlKSB9Oworc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3ROb2RlUHJvdG90eXBlVGFibGUgPSB7IDExLCAzMSwgdHJ1ZSwg
SlNUZXN0Tm9kZTo6aW5mbygpLCBKU1Rlc3ROb2RlUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVz
dE5vZGVQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9kZVBy
b3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5vZGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0Tm9k
ZVByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vZGVQ
cm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0Tm9kZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRp
Y1Byb3BlcnRpZXModm0sIEpTVGVzdE5vZGU6OmluZm8oKSwgSlNUZXN0Tm9kZVByb3RvdHlwZVRh
YmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ID0gZmFsc2U7Ci0gICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKLSAg
ICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSwgc3RybGVuKCJjYWxjdWxh
dGVTZWNyZXRSZXN1bHQiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICB9
Ci0gICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKLSAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsK
LSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQotICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgp
KSkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpLCBz
dHJsZW4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpKTsKLSAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwotICAgIH0KLSNlbmRpZgotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewotICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oImVudHJpZXMiKSwgc3RybGVuKCJlbnRyaWVzIikpOwotICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7Ci0gICAgfQotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewotICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oImtleXMiKSwgc3RybGVuKCJrZXlzIikpOwotICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7Ci0gICAgfQotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInZhbHVlcyIp
LCBzdHJsZW4oInZhbHVlcyIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwot
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAg
IH0KLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9t
SXRlcmF0b3JFbmFibGVkKCkpIHsKLSAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJmb3JFYWNoIiksIHN0cmxl
bigiZm9yRWFjaCIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSAg
ICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0
aW9uYXJ5KCkpCi0gICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKLSAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBhdXRvJiBlbnRyaWVzID0gdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50
cmllc1B1YmxpY05hbWUoKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBpbmZvKCksIGVu
dHJpZXMsICppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KGVudHJpZXMpLCAqdGhp
cyk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qodm0sIGVudHJpZXMpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlz
aW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw2IEBACiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BcnJheVByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0
aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CkBAIC0xNTE0LDYgKzE1
MTMsOSBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPCiBzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9tZXRo
b2RXaXRoUmVjb3JkKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uX2N1c3RvbU1ldGhvZCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jdXN0b21NZXRob2RXaXRoQXJn
cyk7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fZW5hYmxlZEF0UnVudGltZVByaXZh
dGVTdGF0aWNNZXRob2QpOworI2VuZGlmCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9wcml2YXRlTWV0aG9kKTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3B1YmxpY0Fu
ZFByaXZhdGVNZXRob2QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fYWRkRXZlbnRMaXN0ZW5lcik7CkBAIC0xNzUzLDYgKzE3NTUs
MTYgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0Twogc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3R5cGVkQXJyYXlBdHRyKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9jdXN0b21BdHRyKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9jdXN0b21BdHRyKTsK
KyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0T2JqX2VuYWJsZWRBdFJ1bnRpbWVQcml2YXRlQXR0cik7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfZW5hYmxlZEF0UnVudGltZVByaXZhdGVB
dHRyKTsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfZW5hYmxlZEF0UnVudGltZVByaXZhdGVSZWFkT25s
eUF0dHIpOworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9iakNvbnN0cnVjdG9yX2VuYWJsZWRBdFJ1bnRpbWVQ
cml2YXRlU3RhdGljUmVhZE9ubHlBdHRyKTsKKyNlbmRpZgogc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNUZXN0T2JqX29uZm9vKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTVGVzdE9ial9vbmZvbyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RPYmpfb253ZWJraXRmb28pOwpAQCAtMTg3NywzMjMgKzE4ODksMTA4NiBAQCBw
cml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVi
bGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPYmpQcm90b3R5cGUsIEpTVGVz
dE9ialByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdE9iakRPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPYmo+OwogCi0vKiBIYXNoIHRhYmxlICovCisjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdE9iakNvbnN0cnVj
dG9yX2VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMoVk0mIHZtLCBKU09iamVjdCopCit7
CisgICAgcmV0dXJuIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RPYmpDb25z
dHJ1Y3Rvcl9lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljLCBzZXRKU1Rlc3RPYmpDb25z
dHJ1Y3Rvcl9lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljKTsKK30KKworc3RhdGljIGJv
b2wgaXNFbmFibGVkSlNUZXN0T2JqQ29uc3RydWN0b3JfZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0
ZVN0YXRpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJB
TShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpOworfQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0T2JqQ29uc3RydWN0
b3JfZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhWTSYgdm0sIEpTT2JqZWN0KiB0aGlz
T2JqZWN0KQoreworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXNPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpLCAxLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyJfcywg
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3Rh
dGljKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0T2JqQ29uc3RydWN0b3JfZW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpOwor
fQorI2VuZGlmCisKKy8qIEhhc2ggdGFibGUgZm9yIENvbnN0cnVjdG9yICovCisKK3N0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlSW5k
ZXhbNjldID0geworICAgIHsgNCwgLTEgfSwKKyAgICB7IDYsIDY3IH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDE2LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE0
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCisgICAgeyAxNywgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjQsIDY4IH0sCisgICAgeyA1LCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAyMSwgLTEgfSwKKyAgICB7IDEyLCAtMSB9LAorICAgIHsgMywgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDAsIC0xIH0sCisgICAgeyAxMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTUs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjUsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDIsIDY1IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAyMywgLTEgfSwKKyAgICB7IDgsIDY0IH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDEzLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA5LCAtMSB9LAorICAg
IHsgNywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxOCwg
LTEgfSwKKyAgICB7IDExLCAtMSB9LAorICAgIHsgMTksIDY2IH0sCisgICAgeyAyMCwgLTEgfSwK
KyAgICB7IDIyLCAtMSB9LAorICAgIHsgMjYsIC0xIH0sCit9OworCisKK3N0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQoreworICAg
IHsgInN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9iakNvbnN0cnVjdG9yX3N0YXRpY1JlYWRPbmx5TG9uZ0F0dHIpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisg
ICAgeyAic3RhdGljU3RyaW5nQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0
b3Jfc3RhdGljU3RyaW5nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakNvbnN0cnVjdG9yX3N0YXRpY1N0cmluZ0F0
dHIpIH0gfSwKKyAgICB7ICJ0ZXN0U3RhdGljUmVhZG9ubHlPYmoiLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yX3Rlc3RTdGF0aWNSZWFkb25seU9iaiksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxw
dHIpIH0gfSwKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIHsgImVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGVTdGF0aWMiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNU
ZXN0T2JqQ29uc3RydWN0b3JfZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxl
ZEpTVGVzdE9iakNvbnN0cnVjdG9yX2VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMpIH0g
fSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgor
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgeyAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
blN0YXRpYyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQ
cm9wZXJ0eUNhbGxiYWNrKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExh
enlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RPYmpDb25zdHJ1Y3Rvcl9lbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uU3RhdGljKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9w
ZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0T2JqQ29uc3RydWN0b3JfZW5hYmxl
ZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYykgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50
cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisgICAgeyAibnVsbGFibGVTdHJpbmdTdGF0aWNN
ZXRob2QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fbnVsbGFibGVTdHJpbmdTdGF0aWNN
ZXRob2QpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAic3RhdGljTWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aW9uYWxBcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fc3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAg
eyAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uX3N0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyAg
ICB7ICJjbGFzc01ldGhvZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9jbGFzc01ldGhv
ZCksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJjbGFzc01ldGhvZFdpdGhPcHRpb25hbCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9jbGFzc01ldGhvZFdpdGhPcHRpb25hbCksIChp
bnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJjbGFzc01ldGhvZDIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25fY2xhc3NNZXRob2QyKSwgKGludHB0cl90KSAoMSkgfSB9LAorI2lmIEVOQUJM
RShDb25kaXRpb24xKQorICAgIHsgIm92ZXJsb2FkZWRNZXRob2QxIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uX292ZXJsb2FkZWRNZXRob2QxKSwgKGludHB0cl90KSAoMSkgfSB9LAorI2Vs
c2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisgICAgeyAi
dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl90
ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgInRl
c3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25fdGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKKyAgICB7ICJDT05ESVRJT05BTF9DT05TVCIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRy
aW5zaWMsIHsgKGxvbmcgbG9uZykoMCkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmlu
c2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisgICAgeyAiQ09OU1RfVkFMVUVfMCIsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5z
aWMsIHsgKGxvbmcgbG9uZykoMCkgfSB9LAorICAgIHsgIkNPTlNUX1ZBTFVFXzEiLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmlu
c2ljLCB7IChsb25nIGxvbmcpKDEpIH0gfSwKKyAgICB7ICJDT05TVF9WQUxVRV8yIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJp
bnNpYywgeyAobG9uZyBsb25nKSgyKSB9IH0sCisgICAgeyAiQ09OU1RfVkFMVUVfNCIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRy
aW5zaWMsIHsgKGxvbmcgbG9uZykoNCkgfSB9LAorICAgIHsgIkNPTlNUX1ZBTFVFXzgiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50
cmluc2ljLCB7IChsb25nIGxvbmcpKDgpIH0gfSwKKyAgICB7ICJDT05TVF9WQUxVRV85IiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0lu
dHJpbnNpYywgeyAobG9uZyBsb25nKSgtMSkgfSB9LAorICAgIHsgIkNPTlNUX1ZBTFVFXzExIiwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBO
b0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgweGZmZmZmZmZmKSB9IH0sCisgICAgeyAiQ09OU1Rf
VkFMVUVfMTIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFu
dEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDB4MDEpIH0gfSwKKyAgICB7ICJD
T05TVF9WQUxVRV8xMyIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNv
bnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMFgyMCkgfSB9LAorICAg
IHsgIkNPTlNUX1ZBTFVFXzE0IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgweDFhYmMpIH0g
fSwKKyAgICB7ICJDT05TVF9KQVZBU0NSSVBUIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgx
NSkgfSB9LAorICAgIHsgInJlYWRvbmx5IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgwKSB9
IH0sCit9OworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9iakNvbnN0cnVjdG9yVGFi
bGUgPSB7IDI3LCA2MywgdHJ1ZSwgbnVsbHB0ciwgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZh
bHVlcywgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZUluZGV4IH07CisjaWYgRU5BQkxFKENvbmRp
dGlvbjEpCitzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTkRJVElPTkFMX0NPTlNUID09IDAsICJD
T05ESVRJT05BTF9DT05TVCBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURM
Iik7CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoVGVzdE9iajo6Q09OU1RfVkFMVUVfMCA9PSAwLCAi
Q09OU1RfVkFMVUVfMCBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7
CitzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzEgPT0gMSwgIkNPTlNUX1ZBTFVF
XzEgaW4gVGVzdE9iaiBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOworc3RhdGljX2Fz
c2VydChUZXN0T2JqOjpDT05TVF9WQUxVRV8yID09IDIsICJDT05TVF9WQUxVRV8yIGluIFRlc3RP
YmogZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKK3N0YXRpY19hc3NlcnQoVGVzdE9i
ajo6Q09OU1RfVkFMVUVfNCA9PSA0LCAiQ09OU1RfVkFMVUVfNCBpbiBUZXN0T2JqIGRvZXMgbm90
IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CitzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZB
TFVFXzggPT0gOCwgIkNPTlNUX1ZBTFVFXzggaW4gVGVzdE9iaiBkb2VzIG5vdCBtYXRjaCB2YWx1
ZSBmcm9tIElETCIpOworc3RhdGljX2Fzc2VydChUZXN0T2JqOjpDT05TVF9WQUxVRV85ID09IC0x
LCAiQ09OU1RfVkFMVUVfOSBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURM
Iik7CitzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzExID09IDB4ZmZmZmZmZmYs
ICJDT05TVF9WQUxVRV8xMSBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURM
Iik7CitzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzEyID09IDB4MDEsICJDT05T
VF9WQUxVRV8xMiBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7Citz
dGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzEzID09IDBYMjAsICJDT05TVF9WQUxV
RV8xMyBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CitzdGF0aWNf
YXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzE0ID09IDB4MWFiYywgIkNPTlNUX1ZBTFVFXzE0
IGluIFRlc3RPYmogZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKK3N0YXRpY19hc3Nl
cnQoVGVzdE9iajo6Q09OU1RfSU1QTCA9PSAxNSwgIkNPTlNUX0lNUEwgaW4gVGVzdE9iaiBkb2Vz
IG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOworc3RhdGljX2Fzc2VydChUZXN0T2JqOjpyZWFk
b25seSA9PSAwLCAicmVhZG9ubHkgaW4gVGVzdE9iaiBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9t
IElETCIpOworCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklC
VVRFUyBKU1Rlc3RPYmpET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0g
PSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqRE9NQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEFTU0VSVChj
YXN0ZWRUaGlzKTsKKyAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
PCAyKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7CisgICAgYXV0byogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQorICAgICAgICByZXR1cm4gdGhy
b3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIpOworICAgIEFTU0VSVChj
b250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCpjb250ZXh0KTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBhdXRvIHRlc3RDYWxsYmFjayA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsIG51bGxwdHIpOyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOworICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAgIGF1dG8gdGVzdENhbGxiYWNrRnVu
Y3Rpb24gPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlv
bkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rp
b24iLCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gb2JqZWN0ID0gVGVzdE9i
ajo6Y3JlYXRlKGRvY3VtZW50LCB0ZXN0Q2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSwgdGVzdENh
bGxiYWNrRnVuY3Rpb24ucmVsZWFzZU5vbk51bGwoKSk7CisgICAgc3RhdGljX2Fzc2VydChUeXBl
T3JFeGNlcHRpb25PclVuZGVybHlpbmdUeXBlPGRlY2x0eXBlKG9iamVjdCk+Ojppc1JlZik7Cisg
ICAgYXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93
U2NvcGUsIFdURk1vdmUob2JqZWN0KSk7CisgICAgaWYgY29uc3RleHByIChJc0V4Y2VwdGlvbk9y
PGRlY2x0eXBlKG9iamVjdCk+KQorICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0T2JqPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1ZhbHVlKTsKK30KK0pTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdE9iakRP
TUNvbnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RPYmpET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0
KTsKKwordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3RPYmpET01Db25zdHJ1Y3Rvcjo6
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJv
cGVydHlUYWJsZTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9iakRPTUNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE9i
akNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2Jq
RE9NQ29uc3RydWN0b3IpIH07CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RPYmpET01Db25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T2JqOjpwcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgIlRlc3RPYmplY3QiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCisgICAgICAgIHB1dERp
cmVjdCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVp
bHRpbk5hbWVzKCkuZW5hYmxlZEF0UnVudGltZVByaXZhdGVTdGF0aWNNZXRob2RQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMtPmdsb2JhbE9iamVjdCgpLCAxLCAiZW5h
YmxlZEF0UnVudGltZVByaXZhdGVTdGF0aWNNZXRob2QiX3MsIGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25fZW5hYmxlZEF0UnVudGltZVByaXZhdGVTdGF0aWNNZXRob2QpKTsKKyNlbmRpZgor
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCisgICAgICAgIHB1dERpcmVj
dEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVkQXRSdW50aW1lUHJpdmF0ZVN0YXRpY1JlYWRP
bmx5QXR0clByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rl
c3RPYmpDb25zdHJ1Y3Rvcl9lbmFibGVkQXRSdW50aW1lUHJpdmF0ZVN0YXRpY1JlYWRPbmx5QXR0
ciwgbnVsbHB0ciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvcikpOworI2VuZGlmCisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZt
LCBudWxscHRyLCBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7Cit9CisK
K3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdE9ialByb3RvdHlwZV9tZWRpYURldmljZXMoVk0m
IHZtLCBKU09iamVjdCopCit7CisgICAgcmV0dXJuIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBqc1Rlc3RPYmpfbWVkaWFEZXZpY2VzLCBudWxscHRyLCBET01BdHRyaWJ1dGVB
bm5vdGF0aW9uIHsgSlNUZXN0T2JqOjppbmZvKCksIG51bGxwdHIgfSk7Cit9CisKK3N0YXRpYyBi
b29sIGlzRW5hYmxlZEpTVGVzdE9ialByb3RvdHlwZV9tZWRpYURldmljZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAg
ICByZXR1cm4gKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCl8fCBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFsbG93
c01lZGlhRGV2aWNlcygpKTsKK30KKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitzdGF0aWMg
SlNWYWx1ZSBjcmVhdGVKU1Rlc3RPYmpQcm90b3R5cGVfZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0
ZShWTSYgdm0sIEpTT2JqZWN0KikKK3sKKyAgICByZXR1cm4gRE9NQXR0cmlidXRlR2V0dGVyU2V0
dGVyOjpjcmVhdGUodm0sIGpzVGVzdE9ial9lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlLCBzZXRK
U1Rlc3RPYmpfZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlQW5ub3RhdGlv
biB7IEpTVGVzdE9iajo6aW5mbygpLCBudWxscHRyIH0pOworfQorCitzdGF0aWMgYm9vbCBpc0Vu
YWJsZWRKU1Rlc3RPYmpQcm90b3R5cGVfZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OworICAgIHJldHVybiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50
ZXN0RmVhdHVyZUVuYWJsZWQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLnRlc3RGZWF0dXJlMUVuYWJsZWQoKSk7Cit9CisjZW5kaWYKKworc3RhdGljIEpTVmFs
dWUgY3JlYXRlSlNUZXN0T2JqUHJvdG90eXBlX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dB
dHRyaWJ1dGUoVk0mIHZtLCBKU09iamVjdCopCit7CisgICAgcmV0dXJuIERPTUF0dHJpYnV0ZUdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RPYmpfY29uZGl0aW9uYWxseUV4cG9zZWRUb1dp
bmRvd0F0dHJpYnV0ZSwgc2V0SlNUZXN0T2JqX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dB
dHRyaWJ1dGUsIERPTUF0dHJpYnV0ZUFubm90YXRpb24geyBKU1Rlc3RPYmo6OmluZm8oKSwgbnVs
bHB0ciB9KTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0T2JqUHJvdG90eXBlX2Nv
bmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0RvY3VtZW50KCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVz
dE9ialByb3RvdHlwZV9jb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlKFZNJiB2
bSwgSlNPYmplY3QqKQoreworICAgIHJldHVybiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwganNUZXN0T2JqX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUs
IHNldEpTVGVzdE9ial9jb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlLCBET01B
dHRyaWJ1dGVBbm5vdGF0aW9uIHsgSlNUZXN0T2JqOjppbmZvKCksIG51bGxwdHIgfSk7Cit9CisK
K3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdE9ialByb3RvdHlwZV9jb25kaXRpb25hbGx5RXhw
b3NlZFRvV29ya2VyQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNX
b3JrZXJHbG9iYWxTY29wZSgpOworfQorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRp
YyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdE9ialByb3RvdHlwZV9lbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpCit7CisgICAgcmV0dXJuIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIDEsICJlbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uIl9zLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9lbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0T2JqUHJv
dG90eXBlX2VuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQo
KTsKK30KKyNlbmRpZgorCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVKU1Rlc3RPYmpQcm90b3R5cGVf
ZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoVk0mIHZtLCBK
U09iamVjdCogdGhpc09iamVjdCkKK3sKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgMSwgImVuYWJsZWRJblNwZWNpZmljV29ybGRX
aGVuUnVudGltZUZlYXR1cmVFbmFibGVkIl9zLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9l
bmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCk7Cit9CisKK3N0
YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdE9ialByb3RvdHlwZV9lbmFibGVkSW5TcGVjaWZpY1dv
cmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiAoanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+d29ybGQoKS5zb21lV29ybGQoKSAm
JiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5h
YmxlZCgpKTsKK30KKworc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0T2JqUHJvdG90eXBlX3dv
cmxkU3BlY2lmaWNNZXRob2QoVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKK3sKKyAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwg
MSwgIndvcmxkU3BlY2lmaWNNZXRob2QiX3MsIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX3dv
cmxkU3BlY2lmaWNNZXRob2QpOworfQorCitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rlc3RPYmpQ
cm90b3R5cGVfd29ybGRTcGVjaWZpY01ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT53b3JsZCgpLnNvbWVXb3JsZCgpOwor
fQorCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVKU1Rlc3RPYmpQcm90b3R5cGVfY2FsY3VsYXRlU2Vj
cmV0UmVzdWx0KFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpCit7CisgICAgcmV0dXJuIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIDAsICJjYWxj
dWxhdGVTZWNyZXRSZXN1bHQiX3MsIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NhbGN1bGF0
ZVNlY3JldFJlc3VsdCk7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdE9ialByb3Rv
dHlwZV9jYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc1NlY3VyZUNvbnRleHQoKTsKK30KKworc3RhdGljIEpTVmFsdWUgY3JlYXRlSlNUZXN0T2Jq
UHJvdG90eXBlX2dldFNlY3JldEJvb2xlYW4oVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkK
K3sKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSwgMCwgImdldFNlY3JldEJvb2xlYW4iX3MsIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uX2dldFNlY3JldEJvb2xlYW4pOworfQorCitzdGF0aWMgYm9vbCBpc0VuYWJsZWRKU1Rlc3RP
YmpQcm90b3R5cGVfZ2V0U2VjcmV0Qm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzU2VjdXJlQ29udGV4dCgpOworfQorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0
YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdE9ialByb3RvdHlwZV90ZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW4oVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKK3sKKyAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgMCwgInRlc3RG
ZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiJfcywganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVz
dEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNU
ZXN0T2JqUHJvdG90eXBlX3Rlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOworICAg
IHJldHVybiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKTsKK30KKyNlbmRp
ZgorCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVKU1Rlc3RPYmpQcm90b3R5cGVfY29uZGl0aW9uYWxs
eUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNPYmplY3QpCit7
CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCksIDAsICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iX3MsIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlv
bik7Cit9CisKK3N0YXRpYyBib29sIGlzRW5hYmxlZEpTVGVzdE9ialByb3RvdHlwZV9jb25kaXRp
b25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5pc0RvY3VtZW50KCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUpTVGVzdE9ialBy
b3RvdHlwZV9jb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24oVk0mIHZtLCBKU09i
amVjdCogdGhpc09iamVjdCkKK3sKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgMCwgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3Jr
ZXJGdW5jdGlvbiJfcywganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9uYWxseUV4
cG9zZWRUb1dvcmtlckZ1bmN0aW9uKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmFibGVkSlNUZXN0
T2JqUHJvdG90eXBlX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OworICAgIHJldHVybiBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKTsKK30KKworLyog
SGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1Rlc3RPYmpUYWJsZUluZGV4WzE2XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1
Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZUluZGV4WzU3MV0gPSB7
CisgICAgeyA0NywgNTM0IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyA4NywgLTEgfSwKKyAgICB7IDQ1LCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAxMTYsIC0xIH0sCisgICAgeyAyMjUsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDcxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgMzYsIDUxNyB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA5MSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTE4LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDI1NSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
NjIsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjM0LCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxNjcsIDU1NCB9LAorICAgIHsgMTM2LCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE1NiwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgOTcsIC0xIH0sCisgICAgeyAzNSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE2MCwgNTQ2IH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDEyNCwgLTEgfSwKKyAgICB7IDEzOSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgMjM5LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTgyLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDE5MywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjEz
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyA1OCwgLTEgfSwKKyAgICB7IDIzNiwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgNCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMzgsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyA1LCAtMSB9LAorICAgIHsgMTQzLCA1NTkgfSwKKyAgICB7IDEyNSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDc1LCAtMSB9
LAorICAgIHsgMjQ2LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxMzQsIC0xIH0sCisgICAgeyA5OCwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgODAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDU2LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA3NywgLTEgfSwKKyAgICB7IDQy
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA5LCAtMSB9LAorICAgIHsgMjA3LCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMTEzLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxOTgsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTA3LCAtMSB9LAorICAgIHsgMjUyLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA0OCwgNTQyIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgNDQsIDUzMCB9LAorICAgIHsgMTgzLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE3MCwgLTEgfSwKKyAgICB7IDIy
MywgLTEgfSwKKyAgICB7IDIzMCwgLTEgfSwKKyAgICB7IDE0MiwgLTEgfSwKKyAgICB7IDE1OSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgMzIsIDU0NSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyA2LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMjAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyA5MCwgNTMxIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAgICB7IDEwMiwgLTEgfSwKKyAgICB7IDE3Mywg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNzMsIDUyNSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAyNTMsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyA0OSwgLTEgfSwKKyAgICB7IDE1MSwgNTQzIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDEzMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDgxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjU0LCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDc5LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDE3NCwgLTEgfSwKKyAgICB7IDEzMywgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgODUsIDUzNyB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgMjEsIDUxOCB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTkxLCAtMSB9LAorICAgIHsgMTY5LCA1NjUg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyMjAsIDU2MSB9LAorICAgIHsgMjExLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgMTE0LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDMxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAxMDMsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgNjYsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMTExLCA1NDEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDMsIDUyOCB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDI1LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDEwNiwgNTMyIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMTkwLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyMzcsIC0xIH0sCisgICAgeyAx
OTIsIC0xIH0sCisgICAgeyAxMCwgNTEyIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMjMxLCAtMSB9LAorICAgIHsgODIsIC0xIH0sCisgICAgeyAyMTksIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAxNzcsIDU2MiB9LAorICAgIHsgMTQ0LCA1NjggfSwKKyAgICB7IDIwMSwgLTEgfSwKKyAgICB7
IDIzOCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTA0LCAtMSB9LAorICAgIHsgMzcsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE4NSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMjQxLCAtMSB9LAorICAgIHsgMTMxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDYwLCA1MjMgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAxODcsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE5NCwgNTUzIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDE1MiwgNTY2IH0sCisgICAgeyAyOCwgNTQwIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDM5LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyNDQsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjAwLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAxNTcsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE0MSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgMTc4LCAtMSB9LAorICAgIHsgMjE0LCAtMSB9LAorICAgIHsgMjEw
LCAtMSB9LAorICAgIHsgODgsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEwNSwgNTQ4IH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDIyLCA1NDcgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAxOTUsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
NTMsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyA2NSwgNTM1IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgNTEsIDU1NSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgMTIxLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDE0LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA4MywgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAxMzgsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxNzEsIC0xIH0sCisgICAgeyAyNDAsIC0xIH0s
CisgICAgeyAxNTMsIC0xIH0sCisgICAgeyAxNzUsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDE3MiwgNTU3IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIyOSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyNDgsIDU2OSB9LAorICAgIHsgMTgsIDUxNSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAxMjcsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgMzMsIDUyMiB9LAorICAgIHsgMTA5LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNjgsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMzAsIDU2MyB9LAorICAgIHsgMTksIDUx
OSB9LAorICAgIHsgMjE4LCAtMSB9LAorICAgIHsgOTMsIDU2NyB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAyLCA1MjYgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNzIsIDU0OSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTk2LCAtMSB9
LAorICAgIHsgMjMyLCAtMSB9LAorICAgIHsgOCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyA1NywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyA1OSwgLTEgfSwKKyAgICB7IDIzLCA1MTQgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgMjM1LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyNTAsIC0xIH0sCisg
ICAgeyAyNiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTQ4LCA1NTYgfSwKKyAgICB7
IDk5LCAtMSB9LAorICAgIHsgMTU0LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDE0OSwgLTEgfSwKKyAgICB7IDE2MywgLTEgfSwKKyAgICB7IDI3LCA1MTYg
fSwKKyAgICB7IDQxLCA1NTggfSwKKyAgICB7IDE2NCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAxNjUsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDY0LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgOTIsIDU2MCB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDE3LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxNTgsIC0xIH0sCisgICAgeyAyMjQs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEyMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgMjAyLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDEwMSwgLTEgfSwKKyAgICB7IDE5OSwgLTEgfSwKKyAgICB7IDk2LCAtMSB9LAorICAgIHsg
NTAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQsIC0xIH0sCisgICAgeyAxMDgsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyAzLCAtMSB9LAorICAgIHsgMjQzLCAtMSB9LAorICAgIHsgNzQsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDAsIC0xIH0sCi0gICAgeyAxLCAtMSB9LAotICAgIHsgMiwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAorICAgIHsgMjE1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAorICAgIHsgNzYsIDUyNCB9LAogICAgIHsgLTEs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDExLCA1MjcgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxMzcsIC0xIH0sCisgICAgeyAxNDYsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxNjYsIC0x
IH0sCisgICAgeyA2NywgLTEgfSwKKyAgICB7IDk0LCAtMSB9LAorICAgIHsgNTQsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDEzMiwgLTEgfSwKKyAgICB7IDEyMiwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDQwLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAxNiwgNTIxIH0sCisgICAgeyA2MSwgNTQ0IH0sCisgICAg
eyAxNDUsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDcsIDU1MSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEwMCwgNTM4IH0sCisgICAgeyAxMjksIDU1
MiB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyMDksIC0xIH0sCisgICAgeyAxMTIsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAyMDMsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEyLCA1MTMgfSwKKyAgICB7IDEz
LCA1MjAgfSwKKyAgICB7IDE1LCA1MjkgfSwKKyAgICB7IDI0LCAtMSB9LAorICAgIHsgMjksIC0x
IH0sCisgICAgeyAzNCwgLTEgfSwKKyAgICB7IDQzLCAtMSB9LAorICAgIHsgNDYsIC0xIH0sCisg
ICAgeyA1MiwgNTcwIH0sCisgICAgeyA1NSwgNTMzIH0sCisgICAgeyA2MywgNTM5IH0sCisgICAg
eyA2OSwgNTM2IH0sCisgICAgeyA3MCwgLTEgfSwKKyAgICB7IDc4LCAtMSB9LAorICAgIHsgODQs
IDU2NCB9LAorICAgIHsgODYsIC0xIH0sCisgICAgeyA4OSwgLTEgfSwKKyAgICB7IDk1LCAtMSB9
LAorICAgIHsgMTEwLCAtMSB9LAorICAgIHsgMTE1LCAtMSB9LAorICAgIHsgMTE3LCAtMSB9LAor
ICAgIHsgMTE5LCAtMSB9LAorICAgIHsgMTIzLCAtMSB9LAorICAgIHsgMTI2LCAtMSB9LAorICAg
IHsgMTI4LCAtMSB9LAorICAgIHsgMTM1LCAtMSB9LAorICAgIHsgMTQwLCAtMSB9LAorICAgIHsg
MTQ3LCAtMSB9LAorICAgIHsgMTUwLCAtMSB9LAorICAgIHsgMTU1LCAtMSB9LAorICAgIHsgMTYx
LCAtMSB9LAorICAgIHsgMTYyLCAtMSB9LAorICAgIHsgMTY4LCAtMSB9LAorICAgIHsgMTc2LCAt
MSB9LAorICAgIHsgMTc5LCA1NTAgfSwKKyAgICB7IDE4MCwgLTEgfSwKKyAgICB7IDE4MSwgLTEg
fSwKKyAgICB7IDE4NCwgLTEgfSwKKyAgICB7IDE4NiwgLTEgfSwKKyAgICB7IDE4OCwgLTEgfSwK
KyAgICB7IDE4OSwgLTEgfSwKKyAgICB7IDE5NywgLTEgfSwKKyAgICB7IDIwNCwgLTEgfSwKKyAg
ICB7IDIwNSwgLTEgfSwKKyAgICB7IDIwNiwgLTEgfSwKKyAgICB7IDIwOCwgLTEgfSwKKyAgICB7
IDIxMiwgLTEgfSwKKyAgICB7IDIxNiwgLTEgfSwKKyAgICB7IDIxNywgLTEgfSwKKyAgICB7IDIy
MSwgLTEgfSwKKyAgICB7IDIyMiwgLTEgfSwKKyAgICB7IDIyNiwgLTEgfSwKKyAgICB7IDIyNywg
LTEgfSwKKyAgICB7IDIyOCwgLTEgfSwKKyAgICB7IDIzMywgLTEgfSwKKyAgICB7IDI0MiwgLTEg
fSwKKyAgICB7IDI0NSwgLTEgfSwKKyAgICB7IDI0NywgLTEgfSwKKyAgICB7IDI0OSwgLTEgfSwK
KyAgICB7IDI1MSwgLTEgfSwKIH07CiAKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE9ialRhYmxlVmFsdWVzW10gPQotewotICAgIHsgInVuZm9yZ2VhYmxlQXR0ciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqX3VuZm9yZ2VhYmxlQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkKLSAgICB7ICJjb25kaXRpb25hbEF0dHI0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfY29uZGl0
aW9uYWxBdHRyNENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotI2Vsc2UKLSAgICB7IDAsIDAsIE5vSW50cmlu
c2ljLCB7IDAsIDAgfSB9LAotI2VuZGlmCi0jaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJM
RShDb25kaXRpb24yKQotICAgIHsgImNvbmRpdGlvbmFsQXR0cjUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
al9jb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0jZWxzZQotICAgIHsgMCwgMCwg
Tm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpCi0gICAgeyAiY29uZGl0aW9uYWxBdHRyNiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSNlbHNlCi0gICAg
eyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKLSNlbmRpZgotICAgIHsgInVuZm9yZ2Vh
YmxlTWV0aG9kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uX3VuZm9y
Z2VhYmxlTWV0aG9kKSwgKGludHB0cl90KSAoMCkgfSB9LAotfTsKLQotc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgNSwgMTUsIHRydWUsIEpTVGVzdE9iajo6aW5mbygp
LCBKU1Rlc3RPYmpUYWJsZVZhbHVlcywgSlNUZXN0T2JqVGFibGVJbmRleCB9OwotLyogSGFzaCB0
YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9Ci17Ci0jaWYgRU5BQkxFKENvbmRpdGlv
bjEpCi0gICAgeyAiQ09ORElUSU9OQUxfQ09OU1QiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcp
KDApIH0gfSwKLSNlbHNlCi0gICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKLSNl
bmRpZgotICAgIHsgIkNPTlNUX1ZBTFVFXzAiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDAp
IH0gfSwKLSAgICB7ICJDT05TVF9WQUxVRV8xIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgx
KSB9IH0sCi0gICAgeyAiQ09OU1RfVkFMVUVfMiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZyko
MikgfSB9LAotICAgIHsgIkNPTlNUX1ZBTFVFXzQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcp
KDQpIH0gfSwKLSAgICB7ICJDT05TVF9WQUxVRV84IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25n
KSg4KSB9IH0sCi0gICAgeyAiQ09OU1RfVkFMVUVfOSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9u
ZykoLTEpIH0gfSwKLSAgICB7ICJDT05TVF9WQUxVRV8xMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcg
bG9uZykoMHhmZmZmZmZmZikgfSB9LAotICAgIHsgIkNPTlNUX1ZBTFVFXzEyIiwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNp
YywgeyAobG9uZyBsb25nKSgweDAxKSB9IH0sCi0gICAgeyAiQ09OU1RfVkFMVUVfMTMiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50
cmluc2ljLCB7IChsb25nIGxvbmcpKDBYMjApIH0gfSwKLSAgICB7ICJDT05TVF9WQUxVRV8xNCIs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwg
Tm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMHgxYWJjKSB9IH0sCi0gICAgeyAiQ09OU1RfSkFW
QVNDUklQVCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50
SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMTUpIH0gfSwKLSAgICB7ICJyZWFk
b25seSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50
ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMCkgfSB9LAotICAgIHsgInN0YXRpY1Jl
YWRPbmx5TG9uZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yX3N0YXRpY1JlYWRP
bmx5TG9uZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAic3RhdGljU3RyaW5nQXR0ciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigwKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3Rvcl9zdGF0aWNTdHJpbmdB
dHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0T2JqQ29uc3RydWN0b3Jfc3RhdGljU3RyaW5nQXR0cikgfSB9LAotICAgIHsg
IlRlc3RTdWJPYmoiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yX1Rlc3RTdWJPYmopLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCi0gICAgeyAidGVzdFN0YXRpY1JlYWRvbmx5T2JqIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25z
dHJ1Y3Rvcl90ZXN0U3RhdGljUmVhZG9ubHlPYmopLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0jaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKLSAgICB7ICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDApLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yX2VuYWJsZWRBdFJ1
bnRpbWVBdHRyaWJ1dGVTdGF0aWMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpDb25zdHJ1Y3Rvcl9lbmFibGVkQXRSdW50
aW1lQXR0cmlidXRlU3RhdGljKSB9IH0sCi0jZWxzZQotICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMs
IHsgMCwgMCB9IH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIHsgImVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25fZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyksIChpbnRwdHJfdCkgKDEpIH0gfSwK
LSNlbHNlCi0gICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKLSNlbmRpZgotICAg
IHsgIm51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uX251bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAg
IHsgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uX3N0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKSwg
KGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9zdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcp
LCAoaW50cHRyX3QpICgxKSB9IH0sCi0gICAgeyAiY2xhc3NNZXRob2QiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25fY2xhc3NNZXRob2QpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAi
Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fY2xh
c3NNZXRob2RXaXRoT3B0aW9uYWwpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAiY2xhc3NN
ZXRob2QyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX2NsYXNzTWV0aG9kMiksIChpbnRw
dHJfdCkgKDEpIH0gfSwKLSNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKLSAgICB7ICJvdmVybG9hZGVk
TWV0aG9kMSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kMSks
IChpbnRwdHJfdCkgKDEpIH0gfSwKLSNlbHNlCi0gICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAw
LCAwIH0gfSwKLSNlbmRpZgotICAgIHsgInRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25fdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbiksIChpbnRw
dHJfdCkgKDApIH0gfSwKLSAgICB7ICJ0ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uX3Rlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rp
b24pLCAoaW50cHRyX3QpICgwKSB9IH0sCi19OwotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjEpCi1z
dGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTkRJVElPTkFMX0NPTlNUID09IDAsICJDT05ESVRJT05B
TF9DT05TVCBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7Ci0jZW5k
aWYKLXN0YXRpY19hc3NlcnQoVGVzdE9iajo6Q09OU1RfVkFMVUVfMCA9PSAwLCAiQ09OU1RfVkFM
VUVfMCBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7Ci1zdGF0aWNf
YXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzEgPT0gMSwgIkNPTlNUX1ZBTFVFXzEgaW4gVGVz
dE9iaiBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwotc3RhdGljX2Fzc2VydChUZXN0
T2JqOjpDT05TVF9WQUxVRV8yID09IDIsICJDT05TVF9WQUxVRV8yIGluIFRlc3RPYmogZG9lcyBu
b3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKLXN0YXRpY19hc3NlcnQoVGVzdE9iajo6Q09OU1Rf
VkFMVUVfNCA9PSA0LCAiQ09OU1RfVkFMVUVfNCBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZh
bHVlIGZyb20gSURMIik7Ci1zdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzggPT0g
OCwgIkNPTlNUX1ZBTFVFXzggaW4gVGVzdE9iaiBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElE
TCIpOwotc3RhdGljX2Fzc2VydChUZXN0T2JqOjpDT05TVF9WQUxVRV85ID09IC0xLCAiQ09OU1Rf
VkFMVUVfOSBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7Ci1zdGF0
aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzExID09IDB4ZmZmZmZmZmYsICJDT05TVF9W
QUxVRV8xMSBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7Ci1zdGF0
aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzEyID09IDB4MDEsICJDT05TVF9WQUxVRV8x
MiBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7Ci1zdGF0aWNfYXNz
ZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzEzID09IDBYMjAsICJDT05TVF9WQUxVRV8xMyBpbiBU
ZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7Ci1zdGF0aWNfYXNzZXJ0KFRl
c3RPYmo6OkNPTlNUX1ZBTFVFXzE0ID09IDB4MWFiYywgIkNPTlNUX1ZBTFVFXzE0IGluIFRlc3RP
YmogZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKLXN0YXRpY19hc3NlcnQoVGVzdE9i
ajo6Q09OU1RfSU1QTCA9PSAxNSwgIkNPTlNUX0lNUEwgaW4gVGVzdE9iaiBkb2VzIG5vdCBtYXRj
aCB2YWx1ZSBmcm9tIElETCIpOwotc3RhdGljX2Fzc2VydChUZXN0T2JqOjpyZWFkb25seSA9PSAw
LCAicmVhZG9ubHkgaW4gVGVzdE9iaiBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwot
Ci10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rl
c3RPYmpET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKLXsKLSAgICBWTSYgdm0gPSBsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqRE9NQ29u
c3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEFTU0VSVChjYXN0ZWRUaGlz
KTsKLSAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0g
ICAgYXV0byogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQotICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1
Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIpOwotICAgIEFTU0VSVChjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpj
b250ZXh0KTsKLSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIHRlc3RDYWxsYmFjayA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iamVjdCIsIG51bGxw
dHIpOyB9KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBj
b252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVz
dE9iamVjdCIsIG51bGxwdHIpOyB9KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gb2JqZWN0ID0gVGVzdE9iajo6Y3JlYXRl
KGRvY3VtZW50LCB0ZXN0Q2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSwgdGVzdENhbGxiYWNrRnVu
Y3Rpb24ucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChUeXBlT3JFeGNlcHRp
b25PclVuZGVybHlpbmdUeXBlPGRlY2x0eXBlKG9iamVjdCk+Ojppc1JlZik7Ci0gICAgYXV0byBq
c1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFdU
Rk1vdmUob2JqZWN0KSk7Ci0gICAgaWYgY29uc3RleHByIChJc0V4Y2VwdGlvbk9yPGRlY2x0eXBl
KG9iamVjdCk+KQotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
Ci0gICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0T2JqPihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Zh
bHVlKTsKLX0KLUpTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdE9iakRPTUNvbnN0cnVj
dG9yQ29uc3RydWN0LCBKU1Rlc3RPYmpET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKLQotdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3RPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE9iakRPTUNvbnN0cnVjdG9yKSB9OwotCi10ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBV
TlVTRURfUEFSQU0odm0pOwotICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5
cGUoKTsKLX0KLQotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakRPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Ci17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dE9iajo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0T2JqZWN0Il9zKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDIpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpT
VGVzdE9iajo6aW5mbygpLCBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7
Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMiKSwgc3Ry
bGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIikpOwotICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQot
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVh
dHVyZUVuYWJsZWQoKSkgewotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvblN0YXRpYyIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b25TdGF0aWMiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2
bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSNlbmRp
ZgotfQotCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQogc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7
ICJyZWFkT25seUxvbmdBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE9ial9yZWFkT25seUxvbmdBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgInJlYWRPbmx5U3RyaW5nQXR0ciIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfcmVhZE9ubHlTdHJpbmdB
dHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAotICAgIHsgInJlYWRPbmx5VGVzdE9iakF0dHIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3JlYWRPbmx5VGVzdE9iakF0dHIpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAg
eyAiZW51bUF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9ial9lbnVtQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9lbnVtQXR0cikgfSB9LAot
ICAgIHsgImJ5dGVBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfYnl0ZUF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfYnl0ZUF0dHIpIH0g
fSwKLSAgICB7ICJvY3RldEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9vY3RldEF0dHIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfb2N0ZXRB
dHRyKSB9IH0sCi0gICAgeyAic2hvcnRBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfc2hvcnRBdHRyKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
X3Nob3J0QXR0cikgfSB9LAotICAgIHsgImNsYW1wZWRTaG9ydEF0dHIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9jbGFtcGVk
U2hvcnRBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqX2NsYW1wZWRTaG9ydEF0dHIpIH0gfSwKLSAgICB7ICJlbmZv
cmNlUmFuZ2VTaG9ydEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9lbmZvcmNlUmFuZ2VTaG9ydEF0dHIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RP
YmpfZW5mb3JjZVJhbmdlU2hvcnRBdHRyKSB9IH0sCi0gICAgeyAidW5zaWduZWRTaG9ydEF0dHIi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9ial91bnNpZ25lZFNob3J0QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial91bnNpZ25lZFNob3J0QXR0cikg
fSB9LAotICAgIHsgImxvbmdBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfbG9uZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfbG9uZ0F0
dHIpIH0gfSwKLSAgICB7ICJsb25nTG9uZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9sb25nTG9uZ0F0dHIpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RPYmpfbG9uZ0xvbmdBdHRyKSB9IH0sCi0gICAgeyAidW5zaWduZWRMb25nTG9uZ0F0dHIiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE9ial91bnNpZ25lZExvbmdMb25nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial91bnNpZ25lZExvbmdMb25nQXR0
cikgfSB9LAotICAgIHsgInN0cmluZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9zdHJpbmdBdHRyKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
X3N0cmluZ0F0dHIpIH0gfSwKLSAgICB7ICJ1c3ZzdHJpbmdBdHRyIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfdXN2c3RyaW5n
QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdE9ial91c3ZzdHJpbmdBdHRyKSB9IH0sCi0gICAgeyAidGVzdE9iakF0dHIi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9ial90ZXN0T2JqQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial90ZXN0T2JqQXR0cikgfSB9LAotICAgIHsg
InRlc3ROdWxsYWJsZU9iakF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial90ZXN0TnVsbGFibGVPYmpBdHRyKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
T2JqX3Rlc3ROdWxsYWJsZU9iakF0dHIpIH0gfSwKKyAgICB7ICJyZWFkT25seUxvbmdBdHRyIiwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPYmpfcmVhZE9ubHlMb25nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7ICJy
ZWFkT25seVN0cmluZ0F0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWFkT25seVN0cmluZ0F0dHIp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihu
dWxscHRyKSB9IH0sCisgICAgeyAicmVhZE9ubHlUZXN0T2JqQXR0ciIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqX3JlYWRPbmx5VGVzdE9iakF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiZW51bUF0dHIiLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfZW51bUF0dHIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RP
YmpfZW51bUF0dHIpIH0gfSwKKyAgICB7ICJieXRlQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9ial9ieXRlQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9ieXRlQXR0cikgfSB9LAor
ICAgIHsgIm9jdGV0QXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
al9vY3RldEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfb2N0ZXRBdHRyKSB9IH0sCisgICAgeyAic2hvcnRBdHRy
IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3Nob3J0QXR0ciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE9ial9zaG9ydEF0dHIpIH0gfSwKKyAgICB7ICJjbGFtcGVkU2hvcnRBdHRyIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2NsYW1wZWRTaG9ydEF0dHIpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RPYmpfY2xhbXBlZFNob3J0QXR0cikgfSB9LAorICAgIHsgImVuZm9yY2VSYW5nZVNob3J0QXR0
ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9lbmZvcmNlUmFuZ2VT
aG9ydEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RPYmpfZW5mb3JjZVJhbmdlU2hvcnRBdHRyKSB9IH0sCisgICAgeyAi
dW5zaWduZWRTaG9ydEF0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpfdW5zaWduZWRTaG9ydEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfdW5zaWduZWRTaG9ydEF0dHIpIH0gfSwK
KyAgICB7ICJsb25nQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
al9sb25nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9sb25nQXR0cikgfSB9LAorICAgIHsgImxvbmdMb25nQXR0
ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9sb25nTG9uZ0F0dHIp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RPYmpfbG9uZ0xvbmdBdHRyKSB9IH0sCisgICAgeyAidW5zaWduZWRMb25nTG9uZ0F0
dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfdW5zaWduZWRMb25n
TG9uZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RPYmpfdW5zaWduZWRMb25nTG9uZ0F0dHIpIH0gfSwKKyAgICB7ICJz
dHJpbmdBdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3N0cmlu
Z0F0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RPYmpfc3RyaW5nQXR0cikgfSB9LAorICAgIHsgInVzdnN0cmluZ0F0dHIi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfdXN2c3RyaW5nQXR0ciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdE9ial91c3ZzdHJpbmdBdHRyKSB9IH0sCisgICAgeyAidGVzdE9iakF0dHIiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfdGVzdE9iakF0dHIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RP
YmpfdGVzdE9iakF0dHIpIH0gfSwKKyAgICB7ICJ0ZXN0TnVsbGFibGVPYmpBdHRyIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3Rlc3ROdWxsYWJsZU9iakF0dHIpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RPYmpfdGVzdE51bGxhYmxlT2JqQXR0cikgfSB9LAogICAgIHsgImxlbmllbnRUZXN0T2Jq
QXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2xlbmllbnRUZXN0T2JqQXR0ciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE9ial9sZW5pZW50VGVzdE9iakF0dHIpIH0gfSwKLSAgICB7ICJzdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3N0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0T2JqX3N0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKSB9IH0s
Ci0gICAgeyAidXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial91
c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial91c3ZzdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZykgfSB9LAotICAgIHsgImJ5dGVTdHJpbmdB
dHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2J5dGVTdHJpbmdBdHRyVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9ieXRlU3RyaW5nQXR0clRyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcpIH0gfSwKLSAgICB7ICJzdHJpbmdMb25nUmVjb3JkQXR0ciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
X3N0cmluZ0xvbmdSZWNvcmRBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3N0cmluZ0xvbmdSZWNvcmRBdHRyKSB9
IH0sCi0gICAgeyAidXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial91c3ZzdHJpbmdMb25n
UmVjb3JkQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdE9ial91c3ZzdHJpbmdMb25nUmVjb3JkQXR0cikgfSB9LAotICAg
IHsgInVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfdXN2c3RyaW5nTG9uZ1JlY29yZEF0
dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RPYmpfdXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIpIH0gfSwKLSAgICB7ICJzdHJp
bmdPYmpSZWNvcmRBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfc3RyaW5nT2JqUmVjb3JkQXR0ciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9z
dHJpbmdPYmpSZWNvcmRBdHRyKSB9IH0sCi0gICAgeyAic3RyaW5nTnVsbGFibGVPYmpSZWNvcmRB
dHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpfc3RyaW5nTnVsbGFibGVPYmpSZWNvcmRBdHRyKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3N0cmlu
Z051bGxhYmxlT2JqUmVjb3JkQXR0cikgfSB9LAotICAgIHsgInN0cmluZ1ZvaWRDYWxsYmFja1Jl
Y29yZEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9ial9zdHJpbmdWb2lkQ2FsbGJhY2tSZWNvcmRBdHRyKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
X3N0cmluZ1ZvaWRDYWxsYmFja1JlY29yZEF0dHIpIH0gfSwKLSAgICB7ICJkaWN0aW9uYXJ5QXR0
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqX2RpY3Rpb25hcnlBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2RpY3Rpb25hcnlBdHRyKSB9IH0s
Ci0gICAgeyAibnVsbGFibGVEaWN0aW9uYXJ5QXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX251bGxhYmxlRGljdGlvbmFy
eUF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RPYmpfbnVsbGFibGVEaWN0aW9uYXJ5QXR0cikgfSB9LAotICAgIHsgImFu
bm90YXRlZFR5cGVJblVuaW9uQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2Fubm90YXRlZFR5cGVJblVuaW9uQXR0ciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdE9ial9hbm5vdGF0ZWRUeXBlSW5VbmlvbkF0dHIpIH0gfSwKLSAgICB7ICJhbm5vdGF0
ZWRUeXBlSW5TZXF1ZW5jZUF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9hbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZUF0dHIp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RPYmpfYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VBdHRyKSB9IH0sCi0gICAgeyAiaW1w
bGVtZW50YXRpb25FbnVtQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2ltcGxlbWVudGF0aW9uRW51bUF0dHIpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RPYmpfaW1wbGVtZW50YXRpb25FbnVtQXR0cikgfSB9LAotICAgIHsgIm1lZGlhRGV2aWNlcyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfbWVkaWFEZXZpY2VzKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAotICAgIHsgIlhNTE9iakF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9YTUxPYmpBdHRyKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX1hN
TE9iakF0dHIpIH0gfSwKLSAgICB7ICJjcmVhdGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9jcmVhdGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpf
Y3JlYXRlKSB9IH0sCi0gICAgeyAicmVmbGVjdGVkU3RyaW5nQXR0ciIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3JlZmxlY3Rl
ZFN0cmluZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkU3RyaW5nQXR0cikgfSB9LAotICAgIHsg
InJlZmxlY3RlZFVTVlN0cmluZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0T2JqX3JlZmxlY3RlZFVTVlN0cmluZ0F0dHIpIH0gfSwKLSAgICB7ICJyZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRJbnRlZ3JhbEF0dHIpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVm
bGVjdGVkSW50ZWdyYWxBdHRyKSB9IH0sCi0gICAgeyAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3Jh
bEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9y
ZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cikgfSB9LAotICAgIHsgInJlZmxlY3RlZEJvb2xl
YW5BdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpfcmVmbGVjdGVkQm9vbGVhbkF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVk
Qm9vbGVhbkF0dHIpIH0gfSwKLSAgICB7ICJyZWZsZWN0ZWRVUkxBdHRyIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfcmVmbGVj
dGVkVVJMQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRVUkxBdHRyKSB9IH0sCi0gICAgeyAicmVm
bGVjdGVkVVNWVVJMQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHIpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpf
cmVmbGVjdGVkVVNWVVJMQXR0cikgfSB9LAotICAgIHsgInJlZmxlY3RlZFN0cmluZ0F0dHIiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE9ial9yZWZsZWN0ZWRTdHJpbmdBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3RlZFN0cmluZ0F0dHIp
IH0gfSwKLSAgICB7ICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0
ZWRDdXN0b21JbnRlZ3JhbEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxB
dHRyKSB9IH0sCi0gICAgeyAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRDdXN0b21Cb29sZWFu
QXR0cikgfSB9LAotICAgIHsgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0
ZWRDdXN0b21VUkxBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3RlZEN1c3RvbVVSTEF0dHIpIH0gfSwK
KyAgICB7ICJzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9zdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdE9ial9zdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZykg
fSB9LAorICAgIHsgInVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3VzdnN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3VzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxB
c0VtcHR5U3RyaW5nKSB9IH0sCisgICAgeyAiYnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0Vt
cHR5U3RyaW5nIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2J5dGVT
dHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9ieXRlU3RyaW5n
QXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpIH0gfSwKKyAgICB7ICJzdHJpbmdMb25nUmVj
b3JkQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9zdHJpbmdM
b25nUmVjb3JkQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9zdHJpbmdMb25nUmVjb3JkQXR0cikgfSB9LAorICAg
IHsgInVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqX3VzdnN0cmluZ0xvbmdSZWNvcmRBdHRyKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3VzdnN0cmlu
Z0xvbmdSZWNvcmRBdHRyKSB9IH0sCisgICAgeyAidXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIiLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfdXN2c3RyaW5nTG9uZ1JlY29y
ZEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RPYmpfdXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIpIH0gfSwKKyAgICB7ICJz
dHJpbmdPYmpSZWNvcmRBdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqX3N0cmluZ09ialJlY29yZEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfc3RyaW5nT2JqUmVjb3JkQXR0cikg
fSB9LAorICAgIHsgInN0cmluZ051bGxhYmxlT2JqUmVjb3JkQXR0ciIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9zdHJpbmdOdWxsYWJsZU9ialJlY29yZEF0dHIpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RPYmpfc3RyaW5nTnVsbGFibGVPYmpSZWNvcmRBdHRyKSB9IH0sCisgICAgeyAic3RyaW5n
Vm9pZENhbGxiYWNrUmVjb3JkQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9ial9zdHJpbmdWb2lkQ2FsbGJhY2tSZWNvcmRBdHRyKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3N0cmluZ1Zv
aWRDYWxsYmFja1JlY29yZEF0dHIpIH0gfSwKKyAgICB7ICJkaWN0aW9uYXJ5QXR0ciIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9kaWN0aW9uYXJ5QXR0ciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE9ial9kaWN0aW9uYXJ5QXR0cikgfSB9LAorICAgIHsgIm51bGxhYmxlRGljdGlvbmFyeUF0dHIi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfbnVsbGFibGVEaWN0aW9u
YXJ5QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdE9ial9udWxsYWJsZURpY3Rpb25hcnlBdHRyKSB9IH0sCisgICAgeyAi
YW5ub3RhdGVkVHlwZUluVW5pb25BdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqX2Fubm90YXRlZFR5cGVJblVuaW9uQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9hbm5vdGF0ZWRU
eXBlSW5VbmlvbkF0dHIpIH0gfSwKKyAgICB7ICJhbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZUF0dHIi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfYW5ub3RhdGVkVHlwZUlu
U2VxdWVuY2VBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2Fubm90YXRlZFR5cGVJblNlcXVlbmNlQXR0cikgfSB9
LAorICAgIHsgImltcGxlbWVudGF0aW9uRW51bUF0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPYmpfaW1wbGVtZW50YXRpb25FbnVtQXR0ciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9pbXBs
ZW1lbnRhdGlvbkVudW1BdHRyKSB9IH0sCisgICAgeyAibWVkaWFEZXZpY2VzIiwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3Jl
YXRlSlNUZXN0T2JqUHJvdG90eXBlX21lZGlhRGV2aWNlcyksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdE9ialByb3Rv
dHlwZV9tZWRpYURldmljZXMpIH0gfSwKKyAgICB7ICJYTUxPYmpBdHRyIiwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX1hNTE9iakF0dHIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfWE1MT2Jq
QXR0cikgfSB9LAorICAgIHsgImNyZWF0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE9ial9jcmVhdGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfY3JlYXRlKSB9IH0sCisgICAgeyAicmVmbGVj
dGVkU3RyaW5nQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9y
ZWZsZWN0ZWRTdHJpbmdBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3RlZFN0cmluZ0F0dHIpIH0gfSwK
KyAgICB7ICJyZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqX3JlZmxlY3RlZFVTVlN0cmluZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVj
dGVkVVNWU3RyaW5nQXR0cikgfSB9LAorICAgIHsgInJlZmxlY3RlZEludGVncmFsQXR0ciIsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRJbnRlZ3JhbEF0
dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkSW50ZWdyYWxBdHRyKSB9IH0sCisgICAgeyAicmVmbGVj
dGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpfcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVj
dGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIpIH0gfSwKKyAgICB7ICJyZWZsZWN0ZWRCb29sZWFuQXR0
ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRCb29s
ZWFuQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0cikgfSB9LAorICAgIHsgInJl
ZmxlY3RlZFVSTEF0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpf
cmVmbGVjdGVkVVJMQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRVUkxBdHRyKSB9IH0sCisgICAg
eyAicmVmbGVjdGVkVVNWVVJMQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9ial9yZWZsZWN0ZWRVU1ZVUkxBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0
dHIpIH0gfSwKKyAgICB7ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqX3JlZmxlY3RlZFN0cmluZ0F0dHIpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVm
bGVjdGVkU3RyaW5nQXR0cikgfSB9LAorICAgIHsgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0
ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRDdXN0
b21JbnRlZ3JhbEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKSB9
IH0sCisgICAgeyAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfcmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RPYmpfcmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIpIH0gfSwKKyAgICB7ICJyZWZsZWN0ZWRD
dXN0b21VUkxBdHRyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3Jl
ZmxlY3RlZEN1c3RvbVVSTEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkQ3VzdG9tVVJMQXR0cikg
fSB9LAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgeyAiZW5hYmxlZEF0UnVudGltZUF0
dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqX2VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfZW5h
YmxlZEF0UnVudGltZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgImVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5Q2FsbGJhY2ssIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0T2JqUHJvdG90
eXBlX2VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElz
TGF6eVByb3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RPYmpQcm90b3R5cGVf
ZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSkgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50
cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCi0gICAgeyAidHlwZWRBcnJheUF0dHIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
al90eXBlZEFycmF5QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial90eXBlZEFycmF5QXR0cikgfSB9LAotICAgIHsg
ImN1c3RvbUF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9ial9jdXN0b21BdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2N1c3RvbUF0dHIpIH0g
fSwKKyAgICB7ICJ0eXBlZEFycmF5QXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE9ial90eXBlZEFycmF5QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial90eXBlZEFycmF5QXR0cikgfSB9
LAorICAgIHsgImN1c3RvbUF0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpfY3VzdG9tQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9jdXN0b21BdHRyKSB9IH0sCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjQpCiAgICAgeyAianNCdWlsdGluQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6QnVpbHRpbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxC
dWlsdGluR2VuZXJhdG9yPih0ZXN0T2JqSnNCdWlsdGluQXR0cmlidXRlQ29kZUdlbmVyYXRvciks
IChpbnRwdHJfdCkgKHNldFRlc3RPYmpKc0J1aWx0aW5BdHRyaWJ1dGVDb2RlR2VuZXJhdG9yKSB9
IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uNCkKLSAgICB7ICJqc0J1aWx0aW5SZWFkT25seUF0dHJpYnV0
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6QnVpbHRpbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWls
dGluR2VuZXJhdG9yPih0ZXN0T2JqSnNCdWlsdGluUmVhZE9ubHlBdHRyaWJ1dGVDb2RlR2VuZXJh
dG9yKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImpzQnVpbHRpblJlYWRPbmx5QXR0cmli
dXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpBY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW4sIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPih0ZXN0T2Jq
SnNCdWlsdGluUmVhZE9ubHlBdHRyaWJ1dGVDb2RlR2VuZXJhdG9yKSwgKGludHB0cl90KSAobnVs
bHB0cikgfSB9LAogI2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAog
I2VuZGlmCi0gICAgeyAib25mb28iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9vbmZvbyksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9vbmZvbykgfSB9
LAotICAgIHsgIm9ud2Via2l0Zm9vIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfb253ZWJraXRmb28pLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfb253
ZWJraXRmb28pIH0gfSwKLSAgICB7ICJ3aXRoRXhlY1N0YXRlQXR0cmlidXRlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0
aEV4ZWNTdGF0ZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRoRXhlY1N0YXRlQXR0cmlidXRlKSB9
IH0sCi0gICAgeyAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
al93aXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRo
Q2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSkgfSB9LAotICAgIHsgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUpIH0gfSwKLSAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0
ZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRl
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0
YXRlQXR0cmlidXRlKSB9IH0sCi0gICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRF
eGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3dpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSkgfSB9LAor
ICAgIHsgIm9uZm9vIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX29u
Zm9vKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0T2JqX29uZm9vKSB9IH0sCisgICAgeyAib253ZWJraXRmb28iLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfb253ZWJraXRmb28pLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpf
b253ZWJraXRmb28pIH0gfSwKKyAgICB7ICJ3aXRoRXhlY1N0YXRlQXR0cmlidXRlIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3dpdGhFeGVjU3RhdGVBdHRyaWJ1dGUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RPYmpfd2l0aEV4ZWNTdGF0ZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgIndpdGhDYWxs
V2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqX3dpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0T2JqX3dpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKSB9IH0sCisg
ICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RPYmpfd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpIH0g
fSwKKyAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0
ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial93aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZEV4ZWNTdGF0ZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kRXhlY1N0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial93aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZEV4ZWNTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRFeGVjU3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSB9IH0s
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi0gICAgeyAiY29uZGl0aW9uYWxBdHRyMSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
X2NvbmRpdGlvbmFsQXR0cjEpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMSkgfSB9LAorICAg
IHsgImNvbmRpdGlvbmFsQXR0cjEiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpfY29uZGl0aW9uYWxBdHRyMSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9jb25kaXRpb25hbEF0dHIxKSB9IH0s
CiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCi0gICAgeyAiY29uZGl0
aW9uYWxBdHRyMiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0cjIpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfY29uZGl0aW9u
YWxBdHRyMikgfSB9LAorICAgIHsgImNvbmRpdGlvbmFsQXR0cjIiLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMiksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9jb25k
aXRpb25hbEF0dHIyKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwg
MCB9IH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIpCi0gICAgeyAiY29uZGl0aW9uYWxBdHRyMyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0cjMpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRyMykgfSB9LAorICAgIHsgImNvbmRpdGlvbmFsQXR0cjMi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfY29uZGl0aW9uYWxBdHRy
MyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9ial9jb25kaXRpb25hbEF0dHIzKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwg
Tm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKLSAgICB7ICJjYWNoZWRBdHRyaWJ1dGUx
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9jYWNoZWRBdHRyaWJ1
dGUxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAotICAgIHsgImNhY2hlZEF0dHJpYnV0ZTIiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqX2NhY2hlZEF0dHJpYnV0ZTIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiY2Fj
aGVkQXR0cmlidXRlMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2NhY2hlZEF0dHJpYnV0ZTEpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRy
KSB9IH0sCisgICAgeyAiY2FjaGVkQXR0cmlidXRlMiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2NhY2hl
ZEF0dHJpYnV0ZTIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCiAjaWYgRU5BQkxFKENPTkRJVElPTikKLSAgICB7ICJj
YWNoZWRBdHRyaWJ1dGUzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
al9jYWNoZWRBdHRyaWJ1dGUzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgImNhY2hlZEF0dHJpYnV0ZTMiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE9ial9jYWNoZWRBdHRyaWJ1dGUzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAogI2Vsc2UKICAgICB7
IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCi0gICAgeyAiYW55QXR0cmli
dXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpfYW55QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2FueUF0dHJpYnV0ZSkgfSB9LAot
ICAgIHsgIm9iamVjdEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX29iamVjdEF0dHJpYnV0ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9i
al9vYmplY3RBdHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJjb250ZW50RG9jdW1lbnQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2NvbnRlbnREb2N1bWVudCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
LSAgICB7ICJtdXRhYmxlUG9pbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9tdXRhYmxlUG9pbnQpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfbXV0
YWJsZVBvaW50KSB9IH0sCi0gICAgeyAic3RyYXdiZXJyeSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3N0cmF3YmVycnkpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RPYmpfc3RyYXdiZXJyeSkgfSB9LAotICAgIHsgImRlc2NyaXB0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9kZXNjcmlwdGlvbiksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7
ICJpZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqX2lkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2lkKSB9IH0sCi0gICAgeyAiaGFzaCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfaGFzaCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJy
ZXBsYWNlYWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3JlcGxhY2VhYmxlQXR0cmlidXRlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
T2JqX3JlcGxhY2VhYmxlQXR0cmlidXRlKSB9IH0sCi0gICAgeyAibnVsbGFibGVEb3VibGVBdHRy
aWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX251bGxhYmxl
RG91YmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfbnVsbGFibGVMb25nQXR0cmli
dXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAotICAgIHsgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfbnVsbGFibGVCb29sZWFuQXR0cmlidXRlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAotICAgIHsgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAg
ICB7ICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX251bGxhYmxlTG9uZ1Nl
dHRhYmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX251bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRl
KSB9IH0sCi0gICAgeyAibnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX251
bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfbnVsbGFibGVTdHJpbmdT
ZXR0YWJsZUF0dHJpYnV0ZSkgfSB9LAotICAgIHsgIm51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVB
dHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9ial9udWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0T2JqX251bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJu
dWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX251bGxhYmxlQnl0ZVN0
cmluZ1NldHRhYmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX251bGxhYmxlQnl0ZVN0cmluZ1NldHRh
YmxlQXR0cmlidXRlKSB9IH0sCi0gICAgeyAiYXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9hdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiYXR0cmlidXRl
V2l0aFJlc2VydmVkRW51bVR5cGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9ial9hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSkgfSB9LAotICAgIHsg
InRlc3RSZWFkT25seVZvaWRQcm9taXNlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial90ZXN0UmVhZE9ubHlWb2lkUHJv
bWlzZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJ0ZXN0UmVhZE9ubHlQcm9taXNlQXR0cmlidXRl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE9ial90ZXN0UmVhZE9ubHlQcm9taXNlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgInB1dEZvcndh
cmRzQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RPYmpfcHV0Rm9yd2FyZHNBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcHV0
Rm9yd2FyZHNBdHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmli
dXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpfcHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9wdXRG
b3J3YXJkc051bGxhYmxlQXR0cmlidXRlKSB9IH0sCi0gICAgeyAic3RyaW5naWZpZXJBdHRyaWJ1
dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE9ial9zdHJpbmdpZmllckF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9zdHJpbmdpZmllckF0
dHJpYnV0ZSkgfSB9LAotICAgIHsgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1
dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE9ial9jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
T2JqX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJj
b25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfY29uZGl0aW9uYWxs
eUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9jb25kaXRpb25hbGx5RXhwb3Nl
ZFRvV29ya2VyQXR0cmlidXRlKSB9IH0sCi0gICAgeyAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dp
bmRvd0FuZFdvcmtlckF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5k
b3dBbmRXb3JrZXJBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfY29uZGl0aW9uYWxseUV4cG9zZWRUb1dp
bmRvd0FuZFdvcmtlckF0dHJpYnV0ZSkgfSB9LAotICAgIHsgIi1sZWFkaW5nLWh5cGhlbi1hdHRy
aWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE9ial9kYXNoX2xlYWRpbmdfZGFzaF9oeXBoZW5fZGFzaF9hdHRyaWJ1dGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RPYmpfZGFzaF9sZWFkaW5nX2Rhc2hfaHlwaGVuX2Rhc2hfYXR0cmlidXRlKSB9IH0sCi0g
ICAgeyAidHJhaWxpbmctaHlwaGVuLWF0dHJpYnV0ZS0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial90cmFpbGluZ19kYXNoX2h5
cGhlbl9kYXNoX2F0dHJpYnV0ZV9kYXNoXyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial90cmFpbGluZ19kYXNoX2h5cGhl
bl9kYXNoX2F0dHJpYnV0ZV9kYXNoXykgfSB9LAotICAgIHsgImxlYWRpbmdfdW5kZXJzY29yZV9h
dHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9ial9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
X2xlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJfZG91YmxlX2xlYWRp
bmdfdW5kZXJzY29yZV9hdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9kb3VibGVfbGVhZGluZ191bmRlcnNjb3Jl
X2F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0
ZSkgfSB9LAotICAgIHsgInRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlXyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3Ry
YWlsaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlXyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial90cmFpbGluZ191bmRlcnNj
b3JlX2F0dHJpYnV0ZV8pIH0gfSwKKyAgICB7ICJhbnlBdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfYW55QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2FueUF0
dHJpYnV0ZSkgfSB9LAorICAgIHsgIm9iamVjdEF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9vYmplY3RBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfb2JqZWN0
QXR0cmlidXRlKSB9IH0sCisgICAgeyAiY29udGVudERvY3VtZW50IiwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpfY29udGVudERvY3VtZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIm11dGFibGVQb2ludCIsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9tdXRhYmxlUG9pbnQpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RPYmpfbXV0YWJsZVBvaW50KSB9IH0sCisgICAgeyAic3RyYXdiZXJyeSIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9zdHJhd2JlcnJ5KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3N0cmF3
YmVycnkpIH0gfSwKKyAgICB7ICJkZXNjcmlwdGlvbiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2Rlc2Ny
aXB0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgImlkIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqX2lkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2lkKSB9IH0sCisgICAgeyAiaGFzaCIsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqX2hhc2gpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAicmVwbGFjZWFibGVBdHRy
aWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfcmVwbGFjZWFi
bGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVwbGFjZWFibGVBdHRyaWJ1dGUpIH0gfSwKKyAgICB7
ICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX251bGxhYmxlRG91
YmxlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUs
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T2JqX251bGxhYmxlTG9uZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAg
ICB7ICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9udWxsYWJs
ZUJvb2xlYW5BdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAibnVsbGFibGVTdHJpbmdBdHRy
aWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIp
IH0gfSwKKyAgICB7ICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9ial9udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsg
Im51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPYmpfbnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE9ial9udWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKSB9IH0sCisgICAgeyAibnVsbGFi
bGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE9ial9udWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
T2JqX251bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJudWxs
YWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9ial9udWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE9ial9udWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSkgfSB9LAorICAgIHsg
ImF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAg
ICB7ICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9ial9hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE9ial9hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSkgfSB9LAorICAgIHsgInRlc3RSZWFk
T25seVZvaWRQcm9taXNlQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpfdGVzdFJlYWRPbmx5Vm9pZFByb21pc2VBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAg
eyAidGVzdFJlYWRPbmx5UHJvbWlzZUF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqX3Rlc3RSZWFkT25seVByb21pc2VBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisg
ICAgeyAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpfcHV0Rm9yd2FyZHNBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcHV0Rm9yd2FyZHNB
dHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3B1dEZvcndhcmRzTnVsbGFibGVB
dHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RPYmpfcHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSkgfSB9LAor
ICAgIHsgInN0cmluZ2lmaWVyQXR0cmlidXRlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqX3N0cmluZ2lmaWVyQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3N0cmluZ2lmaWVy
QXR0cmlidXRlKSB9IH0sCisgICAgeyAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJp
YnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjaywgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RPYmpQcm90b3R5
cGVfY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdE9i
alByb3RvdHlwZV9jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRlKSB9IH0sCisg
ICAgeyAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJv
cGVydHlDYWxsYmFjaywgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQ
cm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RPYmpQcm90b3R5cGVfY29uZGl0aW9uYWxseUV4
cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJv
cGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdE9ialByb3RvdHlwZV9jb25kaXRp
b25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlKSB9IH0sCisgICAgeyAiY29uZGl0aW9uYWxs
eUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckF0dHJpYnV0ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9ial9jb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2Vy
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3Jr
ZXJBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICItbGVhZGluZy1oeXBoZW4tYXR0cmlidXRlIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2Rhc2hfbGVhZGluZ19kYXNoX2h5
cGhlbl9kYXNoX2F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9kYXNoX2xlYWRpbmdfZGFzaF9oeXBoZW5f
ZGFzaF9hdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICJ0cmFpbGluZy1oeXBoZW4tYXR0cmlidXRlLSIs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial90cmFpbGluZ19kYXNoX2h5
cGhlbl9kYXNoX2F0dHJpYnV0ZV9kYXNoXyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial90cmFpbGluZ19kYXNoX2h5cGhl
bl9kYXNoX2F0dHJpYnV0ZV9kYXNoXykgfSB9LAorICAgIHsgImxlYWRpbmdfdW5kZXJzY29yZV9h
dHRyaWJ1dGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfbGVhZGlu
Z191bmRlcnNjb3JlX2F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0
cmlidXRlKSB9IH0sCisgICAgeyAiX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRl
IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2RvdWJsZV9sZWFkaW5n
X3VuZGVyc2NvcmVfYXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2Nv
cmVfYXR0cmlidXRlKSB9IH0sCisgICAgeyAidHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVf
IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3RyYWlsaW5nX3VuZGVy
c2NvcmVfYXR0cmlidXRlXyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial90cmFpbGluZ191bmRlcnNjb3JlX2F0dHJpYnV0
ZV8pIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIHsgImVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2VuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb24pLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAiZW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQ
cm9wZXJ0eUNhbGxiYWNrKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExh
enlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RPYmpQcm90b3R5cGVfZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNMYXp5UHJvcGVydHlFbmFi
bGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdE9ialByb3RvdHlwZV9lbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9
IH0sCiAjZW5kaWYKLSAgICB7ICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0
dXJlRW5hYmxlZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZW5hYmxlZEluU3BlY2lmaWNX
b3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQpLCAoaW50cHRyX3QpICgxKSB9IH0sCi0gICAg
eyAid29ybGRTcGVjaWZpY01ldGhvZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fd29ybGRT
cGVjaWZpY01ldGhvZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKLSAgICB7ICJjYWxjdWxhdGVTZWNy
ZXRSZXN1bHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2NhbGN1bGF0ZVNlY3JldFJlc3Vs
dCksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJnZXRTZWNyZXRCb29sZWFuIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9nZXRTZWNyZXRCb29sZWFuKSwgKGludHB0cl90KSAoMCkgfSB9
LAorICAgIHsgImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVk
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlByb3BlcnR5
Q2FsbGJhY2spLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TGF6eVByb3Bl
cnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdE9ialByb3RvdHlwZV9lbmFibGVkSW5TcGVjaWZpY1dv
cmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8SXNM
YXp5UHJvcGVydHlFbmFibGVkQ2FsbGJhY2s+KGlzRW5hYmxlZEpTVGVzdE9ialByb3RvdHlwZV9l
bmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCkgfSB9LAorICAg
IHsgIndvcmxkU3BlY2lmaWNNZXRob2QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjayksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0T2JqUHJvdG90
eXBlX3dvcmxkU3BlY2lmaWNNZXRob2QpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVBy
b3BlcnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RPYmpQcm90b3R5cGVfd29ybGRT
cGVjaWZpY01ldGhvZCkgfSB9LAorICAgIHsgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNr
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxi
YWNrPihjcmVhdGVKU1Rlc3RPYmpQcm90b3R5cGVfY2FsY3VsYXRlU2VjcmV0UmVzdWx0KSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFi
bGVkSlNUZXN0T2JqUHJvdG90eXBlX2NhbGN1bGF0ZVNlY3JldFJlc3VsdCkgfSB9LAorICAgIHsg
ImdldFNlY3JldEJvb2xlYW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjayksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxMYXp5UHJvcGVydHlDYWxsYmFjaz4oY3JlYXRlSlNUZXN0T2JqUHJvdG90eXBlX2dl
dFNlY3JldEJvb2xlYW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3BlcnR5RW5h
YmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RPYmpQcm90b3R5cGVfZ2V0U2VjcmV0Qm9vbGVh
bikgfSB9LAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgeyAidGVzdEZlYXR1cmVHZXRT
ZWNyZXRCb29sZWFuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl90ZXN0RmVhdHVyZUdldFNl
Y3JldEJvb2xlYW4pLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidGVzdEZlYXR1cmVHZXRT
ZWNyZXRCb29sZWFuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlByb3BlcnR5Q2FsbGJhY2spLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TGF6eVByb3BlcnR5Q2FsbGJhY2s+KGNyZWF0ZUpTVGVzdE9ialByb3RvdHlwZV90ZXN0RmVh
dHVyZUdldFNlY3JldEJvb2xlYW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PElzTGF6eVByb3Bl
cnR5RW5hYmxlZENhbGxiYWNrPihpc0VuYWJsZWRKU1Rlc3RPYmpQcm90b3R5cGVfdGVzdEZlYXR1
cmVHZXRTZWNyZXRCb29sZWFuKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMs
IHsgMCwgMCB9IH0sCiAjZW5kaWYKQEAgLTIzNTEsOCArMzEyNiw4IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJvcGVyYXRpb25XaXRoRXh0ZXJuYWxE
aWN0aW9uYXJ5UGFyYW1ldGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25X
aXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAg
IHsgImJ1ZmZlclNvdXJjZVBhcmFtZXRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fYnVm
ZmVyU291cmNlUGFyYW1ldGVyKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInRlc3RSZXR1
cm5WYWx1ZU9wdGltaXphdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdGVzdFJldHVy
blZhbHVlT3B0aW1pemF0aW9uKSwgKGludHB0cl90KSAoMikgfSB9LAotICAgIHsgImNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
Y29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9
LAotICAgIHsgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKSwg
KGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dG
dW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpQ
cm9wZXJ0eUNhbGxiYWNrKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PExh
enlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RPYmpQcm90b3R5cGVfY29uZGl0aW9uYWxs
eUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxJc0xhenlQ
cm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0T2JqUHJvdG90eXBlX2NvbmRp
dGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbikgfSB9LAorICAgIHsgImNvbmRpdGlvbmFs
bHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpQcm9wZXJ0eUNhbGxiYWNrKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihjcmVhdGVKU1Rlc3RPYmpQcm90
b3R5cGVfY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxJc0xhenlQcm9wZXJ0eUVuYWJsZWRDYWxsYmFjaz4oaXNFbmFibGVkSlNUZXN0
T2JqUHJvdG90eXBlX2NvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbikgfSB9LAog
ICAgIHsgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdv
cmtlckZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIi1sZWFkaW5nLWh5cGhl
bi1mdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZGFzaF9sZWFkaW5nX2Rhc2hf
aHlwaGVuX2Rhc2hfZnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidHJhaWxp
bmctaHlwaGVuLWZ1bmN0aW9uLSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fdHJhaWxpbmdf
ZGFzaF9oeXBoZW5fZGFzaF9mdW5jdGlvbl9kYXNoXyksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAg
LTIzNjIsMTM1ICszMTM3LDk1IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RP
YmpQcm8KICAgICB7ICJlbmNvZGVJbnRvIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9lbmNv
ZGVJbnRvKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInRvU3RyaW5nIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl90b1N0cmluZyksIChpbnRwdHJfdCkgKDApIH0gfSwKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkKLSAgICB7ICJDT05ESVRJT05BTF9DT05TVCIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsg
KGxvbmcgbG9uZykoMCkgfSB9LAorICAgIHsgIkNPTkRJVElPTkFMX0NPTlNUIiwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNp
YywgeyAobG9uZyBsb25nKSgwKSB9IH0sCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMs
IHsgMCwgMCB9IH0sCiAjZW5kaWYKLSAgICB7ICJDT05TVF9WQUxVRV8wIiwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywg
eyAobG9uZyBsb25nKSgwKSB9IH0sCi0gICAgeyAiQ09OU1RfVkFMVUVfMSIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMs
IHsgKGxvbmcgbG9uZykoMSkgfSB9LAotICAgIHsgIkNPTlNUX1ZBTFVFXzIiLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2lj
LCB7IChsb25nIGxvbmcpKDIpIH0gfSwKLSAgICB7ICJDT05TVF9WQUxVRV80IiwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNp
YywgeyAobG9uZyBsb25nKSg0KSB9IH0sCi0gICAgeyAiQ09OU1RfVkFMVUVfOCIsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5z
aWMsIHsgKGxvbmcgbG9uZykoOCkgfSB9LAotICAgIHsgIkNPTlNUX1ZBTFVFXzkiLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmlu
c2ljLCB7IChsb25nIGxvbmcpKC0xKSB9IH0sCi0gICAgeyAiQ09OU1RfVkFMVUVfMTEiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50
cmluc2ljLCB7IChsb25nIGxvbmcpKDB4ZmZmZmZmZmYpIH0gfSwKLSAgICB7ICJDT05TVF9WQUxV
RV8xMiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50
ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMHgwMSkgfSB9LAotICAgIHsgIkNPTlNU
X1ZBTFVFXzEzIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3Rh
bnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgwWDIwKSB9IH0sCi0gICAgeyAi
Q09OU1RfVkFMVUVfMTQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
b25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDB4MWFiYykgfSB9LAot
ICAgIHsgIkNPTlNUX0pBVkFTQ1JJUFQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDE1KSB9
IH0sCi0gICAgeyAicmVhZG9ubHkiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDApIH0gfSwK
KyAgICB7ICJDT05TVF9WQUxVRV8wIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgwKSB9IH0s
CisgICAgeyAiQ09OU1RfVkFMVUVfMSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoMSkgfSB9
LAorICAgIHsgIkNPTlNUX1ZBTFVFXzIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDIpIH0g
fSwKKyAgICB7ICJDT05TVF9WQUxVRV80IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSg0KSB9
IH0sCisgICAgeyAiQ09OU1RfVkFMVUVfOCIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsgKGxvbmcgbG9uZykoOCkg
fSB9LAorICAgIHsgIkNPTlNUX1ZBTFVFXzkiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKC0x
KSB9IH0sCisgICAgeyAiQ09OU1RfVkFMVUVfMTEiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcp
KDB4ZmZmZmZmZmYpIH0gfSwKKyAgICB7ICJDT05TVF9WQUxVRV8xMiIsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkNvbnN0YW50SW50ZWdlciwgTm9JbnRyaW5zaWMsIHsg
KGxvbmcgbG9uZykoMHgwMSkgfSB9LAorICAgIHsgIkNPTlNUX1ZBTFVFXzEzIiwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNp
YywgeyAobG9uZyBsb25nKSgwWDIwKSB9IH0sCisgICAgeyAiQ09OU1RfVkFMVUVfMTQiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIsIE5vSW50
cmluc2ljLCB7IChsb25nIGxvbmcpKDB4MWFiYykgfSB9LAorICAgIHsgIkNPTlNUX0pBVkFTQ1JJ
UFQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVn
ZXIsIE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDE1KSB9IH0sCisgICAgeyAicmVhZG9ubHki
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFudEludGVnZXIs
IE5vSW50cmluc2ljLCB7IChsb25nIGxvbmcpKDApIH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5m
byBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3QiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9ialByb3Rv
dHlwZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGUg
PSB7IDI1NiwgNTExLCB0cnVlLCBKU1Rlc3RPYmo6OmluZm8oKSwgSlNUZXN0T2JqUHJvdG90eXBl
VGFibGVWYWx1ZXMsIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNz
SW5mbyBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3QiLCAmQmFzZTo6
c19pbmZvLCAmSlNUZXN0T2JqUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0T2JqUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE9iajo6aW5mbygpLCBKU1Rlc3RP
YmpQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIGJvb2wgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IGZhbHNlOwotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5h
YmxlZCgpKSB7Ci0gICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwot
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIp
LCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKSk7Ci0gICAgICAgIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdu
b3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAoISh3b3JsZEZvckRPTU9iamVj
dCgqdGhpcykuc29tZVdvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFi
bGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpLCBzdHJsZW4oImVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIikpOwotICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgfQotICAgIGlmICghd29ybGRGb3JET01PYmpl
Y3QoKnRoaXMpLnNvbWVXb3JsZCgpKSB7Ci0gICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigid29ybGRTcGVjaWZp
Y01ldGhvZCIpLCBzdHJsZW4oIndvcmxkU3BlY2lmaWNNZXRob2QiKSk7Ci0gICAgICAgIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0g
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0gICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVD
b250ZXh0KCkpIHsKLSAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSwg
c3RybGVuKCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKLSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKLSAgICB9Ci0gICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkp
IHsKLSAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2Vj
cmV0Qm9vbGVhbiIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNv
bnRleHQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RG
ZWF0dXJlRW5hYmxlZCgpKSkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbiIpLCBzdHJsZW4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpKTsKLSAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSNlbmRpZgotICAgIGlmICghanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlvbmFs
bHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2Vk
VG9XaW5kb3dGdW5jdGlvbiIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwot
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAg
IH0KLSAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKLSAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSwgc3Ry
bGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSk7Ci0gICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0gICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2Vj
dXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFsbG93c01lZGlhRGV2aWNlcygpKSkgewotICAg
ICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oIm1lZGlhRGV2aWNlcyIpLCBzdHJsZW4oIm1lZGlhRGV2aWNlcyIpKTsK
LSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQotICAgIGlmICghKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkudGVzdEZlYXR1cmVFbmFibGVkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS50ZXN0RmVhdHVyZTFFbmFibGVkKCkpKSB7Ci0gICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
ZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGUiKSk7Ci0gICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICB9Ci0jZW5kaWYK
LSAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRlIiksIHN0cmxlbigiY29uZGl0
aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpOwotICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwotICAgIH0KLSAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpIHsKLSAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7Ci0g
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2Vy
QXR0cmlidXRlIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0
ZSIpKTsKLSAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLSAgICBpZiAoaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkp
Ci0gICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKLSAgICBwdXREaXJlY3Qodm0s
IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1l
cygpLnByaXZhdGVNZXRob2RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fcHJp
dmF0ZU1ldGhvZCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHVibGljQW5k
UHJpdmF0ZU1ldGhvZFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0KCksIDAsIFN0cmluZygpLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9wdWJsaWNB
bmRQcml2YXRlTWV0aG9kKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0KCktPmFycmF5UHJvdG90eXBl
KCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVz
UHJpdmF0ZU5hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0KCktPmFycmF5UHJvdG9W
YWx1ZXNGdW5jdGlvbigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICBhZGRWYWx1ZUl0ZXJhYmxlTWV0aG9kcygqZ2xvYmFsT2Jq
ZWN0KCksICp0aGlzKTsKICAgICBKU09iamVjdCYgdW5zY29wYWJsZXMgPSAqY29uc3RydWN0RW1w
dHlPYmplY3QoZ2xvYmFsT2JqZWN0KCktPnZtKCksIGdsb2JhbE9iamVjdCgpLT5udWxsUHJvdG90
eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIHVuc2NvcGFibGVzLnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuZGVmaW5lZE1ldGhvZCIpLCBqc0Jvb2xlYW4odHJ1
ZSkpOwogICAgIHVuc2NvcGFibGVzLnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInNob3J0QXR0ciIpLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bnNjb3BhYmxlc1N5bWJvbCwgJnVu
c2NvcGFibGVzLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKKyAgICBwdXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnByaXZhdGVNZXRob2RQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMtPmdsb2JhbE9iamVjdCgpLCAxLCAicHJp
dmF0ZU1ldGhvZCJfcywganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fcHJpdmF0ZU1ldGhvZCkp
OworICAgIHB1dERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHVibGljQW5kUHJpdmF0ZU1ldGhvZFByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcy0+Z2xvYmFsT2JqZWN0KCksIDEsICJwdWJs
aWNBbmRQcml2YXRlTWV0aG9kIl9zLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9wdWJsaWNB
bmRQcml2YXRlTWV0aG9kKSk7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQo
KSkKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRp
bWVQcml2YXRlQXR0clByaXZhdGVOYW1lKCksIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCBqc1Rlc3RPYmpfZW5hYmxlZEF0UnVudGltZVByaXZhdGVBdHRyLCBzZXRKU1Rlc3RP
YmpfZW5hYmxlZEF0UnVudGltZVByaXZhdGVBdHRyLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsg
SlNUZXN0T2JqOjppbmZvKCksIG51bGxwdHIgfSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikpOworI2VuZGlmCisjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNj
ZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRpbWVQcml2YXRlUmVhZE9ubHlBdHRyUHJpdmF0ZU5h
bWUoKSwgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdE9ial9lbmFi
bGVkQXRSdW50aW1lUHJpdmF0ZVJlYWRPbmx5QXR0ciwgbnVsbHB0ciwgRE9NQXR0cmlidXRlQW5u
b3RhdGlvbiB7IEpTVGVzdE9iajo6aW5mbygpLCBudWxscHRyIH0pLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKKyNlbmRpZgog
fQogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0Iiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdE9ialRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE9iaikgfTsKKy8qIEhhc2ggdGFibGUgZm9yIEluc3RhbmNlICovCisKK3N0YXRp
YyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RPYmpJbnN0YW5jZVRhYmxlSW5k
ZXhbMTZdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDQsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAzLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorICAgIHsgMSwg
LTEgfSwKKyAgICB7IDIsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorfTsKKwor
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqSW5zdGFuY2VUYWJsZVZhbHVl
c1tdID0KK3sKKyAgICB7ICJ1bmZvcmdlYWJsZUF0dHIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfdW5mb3JnZWFibGVBdHRyKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikg
fSB9LAorI2lmIEVOQUJMRShDb25kaXRpb24xKQorICAgIHsgImNvbmRpdGlvbmFsQXR0cjQiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9ial9jb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0s
CisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisgICAgeyAiY29uZGl0
aW9uYWxBdHRyNSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX2NvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KG51bGxwdHIpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0g
fSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikK
KyAgICB7ICJjb25kaXRpb25hbEF0dHI2Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfY29uZGl0aW9uYWxB
dHRyNkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmlu
c2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCisgICAgeyAidW5mb3JnZWFibGVNZXRob2QiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpJbnN0
YW5jZUZ1bmN0aW9uX3VuZm9yZ2VhYmxlTWV0aG9kKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsK
Kworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpJbnN0YW5jZVRhYmxlID0geyA1LCAx
NSwgdHJ1ZSwgSlNUZXN0T2JqOjppbmZvKCksIEpTVGVzdE9iakluc3RhbmNlVGFibGVWYWx1ZXMs
IEpTVGVzdE9iakluc3RhbmNlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9i
ajo6c19pbmZvID0geyAiVGVzdE9iamVjdCIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPYmpJbnN0
YW5jZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9iaikgfTsKIAog
SlNUZXN0T2JqOjpKU1Rlc3RPYmooU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T2JqPiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBw
ZXI8VGVzdE9iaj4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCkBAIC00
MTQ4LDYgKzQ4ODMsNzQgQEAgSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9j
dQogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial9j
dXN0b21BdHRyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfZW5hYmxlZEF0UnVudGltZVByaXZhdGVBdHRy
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRo
aXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExvbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZW5hYmxlZEF0UnVudGltZVByaXZhdGVBdHRyKCkpKSk7Cit9CisKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfZW5hYmxlZEF0UnVudGltZVByaXZhdGVBdHRy
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ial9lbmFibGVkQXRSdW50aW1lUHJpdmF0
ZUF0dHJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOworfQorCisjZW5kaWYKKworI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX2Vu
YWJsZWRBdFJ1bnRpbWVQcml2YXRlQXR0clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExv
bmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRp
b25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0geworICAg
ICAgICByZXR1cm4gaW1wbC5zZXRFbmFibGVkQXRSdW50aW1lUHJpdmF0ZUF0dHIoV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX2VuYWJsZWRBdFJ1bnRpbWVQcml2YXRlQXR0ciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0
ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpT
VGVzdE9ial9lbmFibGVkQXRSdW50aW1lUHJpdmF0ZUF0dHJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKKyNl
bmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RPYmpfZW5hYmxlZEF0UnVudGltZVByaXZhdGVSZWFkT25seUF0dHJHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCkKK3sK
KyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmVuYWJsZWRBdFJ1bnRpbWVQcml2YXRlUmVhZE9ubHlBdHRyKCkpKSk7Cit9CisKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfZW5hYmxlZEF0UnVudGltZVByaXZhdGVSZWFk
T25seUF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqX2VuYWJsZWRBdFJ1bnRp
bWVQcml2YXRlUmVhZE9ubHlBdHRyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30K
KworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yX2VuYWJsZWRBdFJ1bnRpbWVQcml2YXRlU3RhdGljUmVh
ZE9ubHlBdHRyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0KQorewor
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgdGhyb3dTY29wZSwgVGVzdE9iajo6ZW5hYmxlZEF0UnVudGltZVByaXZhdGVTdGF0aWNS
ZWFkT25seUF0dHIoKSkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9i
akNvbnN0cnVjdG9yX2VuYWJsZWRBdFJ1bnRpbWVQcml2YXRlU3RhdGljUmVhZE9ubHlBdHRyLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0T2JqPjo6Z2V0U3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yX2VuYWJsZWRB
dFJ1bnRpbWVQcml2YXRlU3RhdGljUmVhZE9ubHlBdHRyR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKworI2VuZGlmCisKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfb25mb29HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFS
QU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkBAIC02MTQ2LDYgKzY5NDksMjggQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdAogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9jdXN0b21NZXRob2RX
aXRoQXJnc0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiY3VzdG9tTWV0
aG9kV2l0aEFyZ3MiKTsKIH0KIAorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbl9lbmFi
bGVkQXRSdW50aW1lUHJpdmF0ZVN0YXRpY01ldGhvZEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGlmIChVTkxJS0VMWShj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBhdXRv
IGxvbmdBcmcgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFRlc3RPYmo6OmVuYWJsZWRBdFJ1bnRpbWVQcml2YXRlU3RhdGljTWV0aG9kKFdURk1vdmUobG9u
Z0FyZykpKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvbl9lbmFibGVkQXRSdW50aW1lUHJpdmF0ZVN0YXRpY01ldGhvZCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25fZW5hYmxlZEF0UnVudGltZVByaXZhdGVTdGF0aWNNZXRob2RC
b2R5LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgImVuYWJsZWRBdFJ1bnRpbWVQcml2YXRlU3RhdGljTWV0aG9kIik7Cit9
CisKKyNlbmRpZgorCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25fcHJpdmF0ZU1ldGhvZEJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRp
dGlvbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCShyZXZpc2lvbiAyNzk1MDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0
aW9uQ29uZGl0aW9uYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMSArOTUsMTQgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQ
cm90b3R5cGUsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlOjpCYXNlKTsKIAog
dXNpbmcgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsPjsKIAor
dGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbERPTUNv
bnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxET01Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbERPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWxET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAt
MTE1LDcgKzExOCwxOSBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBI
YXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlVGFibGVJbmRleFs4
XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
MiwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQog
ewpAQCAtMTMyLDcgKzE0Nyw4IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RP
cGVyYXQKICNlbmRpZgogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9wZXJhdGlvbkNvbmRp
dGlvbmFsUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZVRhYmxlID0geyAzLCA3LCB0cnVl
LCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6aW5mbygpLCBKU1Rlc3RPcGVyYXRpb25Db25k
aXRpb25hbFByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFBy
b3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RPcGVyYXRpb25Db25k
aXRpb25hbFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlVGFibGUs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQ
cm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBwcml2YXRlOgogICAgIH0KIAog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlLCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpCYXNlKTsKIApAQCAtMjA3LDYgKzIw
OSw3IEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF8KIH0KIEpTQ19B
Tk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3RvckNvbnN0cnVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QpOwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3RvcikgfTsKIAog
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMjIyLDE0ICsyMjUsMjEgQEAgdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1YwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2gg
dGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisK
K3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlVGFibGVJbmRleFsyXSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMCwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGUgPSB7IDEsIDEs
IHRydWUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmluZm8oKSwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsOCBAQCBwcml2YXRlOgogICAgIH0KIAog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJv
dG90eXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBl
OjpCYXNlKTsKIApAQCAtMTUwLDYgKzE1Miw3IEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTF8KIH0KIEpTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZURPTUNvbnN0cnVjdG9yOjpjb25zdHJ1
Y3QpOwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTY1LDE0ICsxNjgsMjEgQEAgdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1YwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUg
Zm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRp
YyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlVGFibGVJbmRleFsyXSA9IHsKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgMCwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KIHsKICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKSB9Oworc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJv
dG90eXBlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2U6OmluZm8oKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZVByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlUHJvdG90eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlIiwgJkJhc2U6OnNfaW5mbywgJkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGVUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJm
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4LDE0IEBAIHByaXZhdGU6CiAgICAg
fQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSwgSlNUZXN0
UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0UGx1Z2luSW50
ZXJmYWNlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3RQbHVnaW5JbnRlcmZhY2U+OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVz
dFBsdWdpbkludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UGx1Z2luSW50
ZXJmYWNlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RQbHVnaW5JbnRlcmZhY2UiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dFBsdWdpbkludGVyZmFjZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAg
LTk4LDE0ICsxMDEsMjEgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFBsdWdpbkludGVyZmFjZURP
TQogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyog
SGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGVUYWJsZUluZGV4WzJdID0g
eworICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXNb
XSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFBsdWdpbkludGVyZmFj
ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFBsdWdpbklu
dGVyZmFjZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFBsdWdpbkludGVyZmFjZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UGx1
Z2luSW50ZXJmYWNlUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2VQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlOjppbmZvKCksIEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZVRhYmxlVmFs
dWVzLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBD
bGFzc0luZm8gSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
UGx1Z2luSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdFBsdWdpbkludGVyZmFjZVBy
b3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFBsdWdpbklu
dGVyZmFjZVByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw4IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSwgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpCYXNlKTsKIApAQCAtMTkyLDYgKzE5
NCw3IEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF8KIH0KIEpTQ19B
Tk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudERPTUNvbnN0
cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRET01Db25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KTsKIAordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRET01Db25zdHJ1Y3RvcikgfTsKIAogdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudERPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0yMDYsMTYgKzIwOSwzMCBAQCB0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDIpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KKworc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudFByb3RvdHlwZVRhYmxlSW5kZXhbOV0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIDggfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
MiwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0
cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKLSAgICB7ICJwcm9taXNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudF9wcm9taXNlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAotICAgIHsgInJlYXNvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnRfcmVhc29uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInByb21pc2UiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudF9wcm9taXNl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
bnVsbHB0cikgfSB9LAorICAgIHsgInJlYXNvbiIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50X3JlYXNvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSkgfTsKK3N0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBl
VGFibGUgPSB7IDMsIDcsIHRydWUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6aW5mbygp
LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudCIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9u
bHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkocmV2aXNpb24gMjc5NTAzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5
TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDExICs5MywxNCBAQCBwcml2YXRlOgog
ICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGUsIEpT
VGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdFJlYWRP
bmx5TWFwTGlrZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNUZXN0UmVhZE9ubHlNYXBMaWtlPjsKIAordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBK
U1Rlc3RSZWFkT25seU1hcExpa2VET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJlYWRP
bmx5TWFwTGlrZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UmVhZE9ubHlNYXBMaWtl
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RSZWFkT25seU1hcExpa2VET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdFJlYWRPbmx5TWFwTGlrZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CkBAIC0xMTMsMjcgKzExNiw1MiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UmVhZE9ubHlNYXBM
aWtlRE9NCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICov
CisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZVRhYmxlSW5kZXhb
MThdID0geworICAgIHsgMSwgMTcgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyA3LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAxNiB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAzLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA0LCAt
MSB9LAorICAgIHsgNiwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKLSAgICB7ICJzaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UmVh
ZE9ubHlNYXBMaWtlX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiZ2V0Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uX2dl
dCksIChpbnRwdHJfdCkgKDEpIH0gfSwKLSAgICB7ICJoYXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oanNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25faGFz
KSwgKGludHB0cl90KSAoMSkgfSB9LAotICAgIHsgImVudHJpZXMiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25f
ZW50cmllcyksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJrZXlzIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uX2tleXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAidmFsdWVzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uX3ZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJzaXplIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdFJlYWRPbmx5TWFwTGlrZV9zaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgImdldCIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fZ2V0KSwgKGludHB0
cl90KSAoMSkgfSB9LAorICAgIHsgImhhcyIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0UmVhZE9ubHlNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25faGFzKSwgKGludHB0cl90KSAoMSkgfSB9LAorICAgIHsgImVu
dHJpZXMiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
X2VudHJpZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAia2V5cyIsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24s
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
anNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25fa2V5cyksIChpbnRwdHJfdCkg
KDApIH0gfSwKKyAgICB7ICJ2YWx1ZXMiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFJlYWRPbmx5TWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uX3ZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJm
b3JFYWNoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbl9mb3JFYWNoKSwg
KGludHB0cl90KSAoMSkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJlYWRPbmx5
TWFwTGlrZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFJlYWRPbmx5TWFwTGlrZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RS
ZWFkT25seU1hcExpa2VQcm90b3R5cGVUYWJsZSA9IHsgOCwgMTUsIHRydWUsIEpTVGVzdFJlYWRP
bmx5TWFwTGlrZTo6aW5mbygpLCBKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGVUYWJsZVZh
bHVlcywgSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlVGFibGVJbmRleCB9OworY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dFJlYWRPbmx5TWFwTGlrZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RSZWFkT25seU1hcExpa2VQ
cm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RSZWFkT25s
eU1hcExpa2VQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtl
OjppbmZvKCksIEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhp
cyk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwg
Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVi
bGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CisgICAgYXV0byYgZW50cmllcyA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2
bSwgaW5mbygpLCBlbnRyaWVzLCAqaW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShl
bnRyaWVzKSwgKnRoaXMpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2V0RGlyZWN0KHZtLCBlbnRyaWVzKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAg
ICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExp
a2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDE0IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZSwgSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0UmVhZE9ubHlTZXRM
aWtlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rl
c3RSZWFkT25seVNldExpa2U+OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdFJl
YWRPbmx5U2V0TGlrZURPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UmVhZE9ubHlTZXRM
aWtlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RSZWFkT25seVNldExpa2UiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFJl
YWRPbmx5U2V0TGlrZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0UmVhZE9ubHlTZXRMaWtlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEx
MiwyNiArMTE1LDUxIEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RSZWFkT25seVNldExpa2VET00K
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogfQogCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhh
c2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlVGFibGVJbmRleFsxOF0gPSB7
CisgICAgeyAxLCAxNyB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA0LCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyA2LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAxNiB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAyLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAzLCAtMSB9LAor
ICAgIHsgNSwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0
cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
LSAgICB7ICJzaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UmVhZE9ubHlT
ZXRMaWtlX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiaGFzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2hhcyksIChp
bnRwdHJfdCkgKDEpIH0gfSwKLSAgICB7ICJlbnRyaWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2VudHJp
ZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAia2V5cyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9r
ZXlzKSwgKGludHB0cl90KSAoMCkgfSB9LAotICAgIHsgInZhbHVlcyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGVGdW5jdGlv
bl92YWx1ZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAiZm9yRWFjaCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGVG
dW5jdGlvbl9mb3JFYWNoKSwgKGludHB0cl90KSAoMSkgfSB9LAorICAgIHsgInNpemUiLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IsIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0UmVhZE9ubHlTZXRMaWtlX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiaGFzIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9oYXMpLCAoaW50
cHRyX3QpICgxKSB9IH0sCisgICAgeyAiZW50cmllcyIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24sIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0UmVhZE9u
bHlTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25fZW50cmllcyksIChpbnRwdHJfdCkgKDApIH0gfSwK
KyAgICB7ICJrZXlzIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGVG
dW5jdGlvbl9rZXlzKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgInZhbHVlcyIsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25fdmFsdWVzKSwgKGlu
dHB0cl90KSAoMCkgfSB9LAorICAgIHsgImZvckVhY2giLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFJlYWRP
bmx5U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2ZvckVhY2gpLCAoaW50cHRyX3QpICgxKSB9IH0s
CiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0UmVhZE9ubHlTZXRMaWtlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5
cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3Rv
dHlwZVRhYmxlID0geyA3LCAxNSwgdHJ1ZSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlOjppbmZvKCks
IEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RSZWFkT25s
eVNldExpa2VQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UmVhZE9ubHlTZXRMaWtlIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZVRhYmxlLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZSkg
fTsKIAogdm9pZCBKU1Rlc3RSZWFkT25seVNldExpa2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0
aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RSZWFkT25seVNldExpa2U6OmluZm8oKSwgSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBh
dXRvJiBlbnRyaWVzID0gdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1
YmxpY05hbWUoKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBpbmZvKCksIGVudHJpZXMs
ICppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KGVudHJpZXMpLCAqdGhpcyk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCBnZXREaXJlY3Qodm0sIGVudHJpZXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RB
R19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMSArNzcsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlLCBKU1Rl
c3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGU6OkJhc2UpOwogCiB1c2luZyBKU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3RET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdD47CiAKK3RlbXBsYXRlPD4g
Y29uc3QgdW5zaWduZWQgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0RE9NQ29uc3RydWN0b3I6
OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RET01Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlD
b3N0RE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3RET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtOTcsMTQg
KzEwMCwyMSBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDCiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKIH0KIAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRh
YmxlIGZvciBQcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaElu
ZGV4IEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZVRhYmxlSW5kZXhbMl0gPSB7
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGVUYWJsZVZh
bHVlc1tdID0KIHsKICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNU
ZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UmVwb3J0
RXh0cmFNZW1vcnlDb3N0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUpIH07Citz
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlw
ZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q6OmluZm8o
KSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVz
dFJlcG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNz
SW5mbyBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRl
c3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTEgKzEwMywxNCBAQCBwcml2YXRlOgogICAgIH0KIAog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6QmFzZSk7
CiAKIHVzaW5nIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZURPTUNvbnN0cnVj
dG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlPjsKIAordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCkBAIC0xMjMsMjEgKzEyNiw0NCBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KKworc3RhdGljIGNv
bnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZVRhYmxlSW5kZXhbMThdID0geworICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDMsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMiwgMTYgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNCwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgMCwgMTcgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwg
LTEgfSwKKyAgICB7IDYsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyA1LCAtMSB9LAorICAgIHsgNywgLTEgfSwKK307CisKIAog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKLSAgICB7ICJ2YWx1ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlX3Zh
bHVlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlX3ZhbHVlKSB9IH0sCi0g
ICAgeyAicmVhZG9ubHlWYWx1ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VfcmVhZG9ubHlWYWx1ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAg
ICB7ICJjYWNoZWRWYWx1ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlX2NhY2hl
ZFZhbHVlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlX2NhY2hlZFZhbHVl
KSB9IH0sCi0gICAgeyAicG9ydHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlX3BvcnRzKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgImNh
Y2hlZFJlYWRvbmx5VmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlX2NhY2hlZFJlYWRvbmx5VmFsdWUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CisgICAgeyAidmFsdWUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VfdmFsdWUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VfdmFsdWUpIH0gfSwKKyAgICB7ICJyZWFkb25seVZhbHVlIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VfcmVhZG9ubHlWYWx1ZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxw
dHIpIH0gfSwKKyAgICB7ICJjYWNoZWRWYWx1ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZV9jYWNoZWRWYWx1ZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZV9jYWNoZWRWYWx1ZSkgfSB9LAorICAg
IHsgInBvcnRzIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Vf
cG9ydHMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiY2FjaGVkUmVhZG9ubHlWYWx1ZSIsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlX2NhY2hlZFJlYWRvbmx5VmFsdWUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihu
dWxscHRyKSB9IH0sCiAgICAgeyAiZnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uX2Z1bmN0aW9uKSwgKGludHB0cl90KSAoMSkgfSB9
LAogICAgIHsgImZ1bmN0aW9uUmV0dXJuaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbl9mdW5jdGlvblJldHVybmluZyksIChpbnRwdHJfdCkg
KDApIH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSkg
fTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlVGFibGUgPSB7IDgsIDE1LCB0cnVlLCBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OmluZm8oKSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBl
KSB9OwogCiB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAkocmV2
aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMSArOTUsMTQgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2V0TGlrZVByb3RvdHlwZSwgSlNU
ZXN0U2V0TGlrZVByb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdFNldExpa2VET01Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFNldExpa2U+
OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdFNldExpa2VET01Db25zdHJ1Y3Rv
cjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdFNldExpa2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dFNldExpa2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdFNldExpa2VET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdFNldExpa2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTE1
LDI5ICsxMTgsNzAgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNldExpa2VET01Db25zdHJ1Ywog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFz
aCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3RTZXRMaWtlUHJvdG90eXBlVGFibGVJbmRleFszNF0gPSB7CisgICAgeyA1
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA0LCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IDIsIC0xIH0sCisgICAgeyA5LCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDYsIDMzIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDAsIDMyIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDgsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDMsIC0xIH0sCisgICAgeyA3LCAtMSB9LAorfTsKKwogCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2V0TGlrZVByb3RvdHlwZVRhYmxlVmFs
dWVzW10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXRMaWtlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCi0gICAgeyAic2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdFNldExpa2Vfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJoYXMiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2hhcyksIChp
bnRwdHJfdCkgKDEpIH0gfSwKLSAgICB7ICJlbnRyaWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9lbnRyaWVzKSwgKGlu
dHB0cl90KSAoMCkgfSB9LAotICAgIHsgImtleXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2tleXMpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCi0gICAgeyAidmFsdWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdFNldExpa2VQcm90b3R5cGVGdW5jdGlvbl92YWx1ZXMpLCAoaW50cHRyX3QpICgw
KSB9IH0sCi0gICAgeyAiZm9yRWFjaCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25fZm9yRWFjaCksIChpbnRwdHJfdCkgKDEp
IH0gfSwKLSAgICB7ICJhZGQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uX2FkZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKLSAg
ICB7ICJjbGVhciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTZXRM
aWtlUHJvdG90eXBlRnVuY3Rpb25fY2xlYXIpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0gICAgeyAi
ZGVsZXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VQ
cm90b3R5cGVGdW5jdGlvbl9kZWxldGUpLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAic2l6
ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvciwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RTZXRMaWtlX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCisgICAgeyAiaGFzIiwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25faGFzKSwgKGludHB0cl90KSAo
MSkgfSB9LAorICAgIHsgImVudHJpZXMiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VQcm90b3R5
cGVGdW5jdGlvbl9lbnRyaWVzKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImtleXMiLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdFNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9rZXlzKSwgKGludHB0cl90
KSAoMCkgfSB9LAorICAgIHsgInZhbHVlcyIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U2V0TGlrZVByb3Rv
dHlwZUZ1bmN0aW9uX3ZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJmb3JFYWNo
IiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25fZm9yRWFjaCksIChp
bnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7ICJhZGQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VQ
cm90b3R5cGVGdW5jdGlvbl9hZGQpLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAiY2xlYXIi
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VQcm90b3R5cGVGdW5jdGlvbl9jbGVhciksIChpbnRw
dHJfdCkgKDApIH0gfSwKKyAgICB7ICJkZWxldGUiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VQ
cm90b3R5cGVGdW5jdGlvbl9kZWxldGUpLCAoaW50cHRyX3QpICgxKSB9IH0sCiB9OwogCi1jb25z
dCBDbGFzc0luZm8gSlNUZXN0U2V0TGlrZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFNldExp
a2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdFNldExpa2VQcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVz
dFNldExpa2VQcm90b3R5cGVUYWJsZSA9IHsgMTAsIDMxLCB0cnVlLCBKU1Rlc3RTZXRMaWtlOjpp
bmZvKCksIEpTVGVzdFNldExpa2VQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0U2V0TGlrZVBy
b3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXRMaWtlUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJUZXN0U2V0TGlrZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RTZXRM
aWtlUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U2V0
TGlrZVByb3RvdHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RTZXRMaWtlUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJl
aWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0U2V0TGlrZTo6aW5mbygpLCBKU1Rlc3RTZXRM
aWtlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBhdXRvJiBlbnRy
aWVzID0gdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUo
KTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBpbmZvKCksIGVudHJpZXMsICppbmZvKCkt
PnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KGVudHJpZXMpLCAqdGhpcyk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBnZXREaXJlY3Qodm0sIGVudHJpZXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VU
X1RSQU5TSVRJT04oKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxMSArOTksMTQg
QEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9Owog
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uc1Byb3RvdHlwZTo6QmFzZSk7CiAKIHVzaW5nIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OwogCit0ZW1wbGF0
ZTw+IGNvbnN0IHVuc2lnbmVkIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNE
T01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNET01Db25zdHJ1
Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTE5LDI5ICsx
MjIsNzAgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZAogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJs
ZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlVGFibGVJbmRl
eFszNF0gPSB7CisgICAgeyA3LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA2LCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDQsIC0xIH0sCisgICAgeyAzLCAtMSB9LAorICAgIHsg
MiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDEsIDMzIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIDMyIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDksIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDUsIC0xIH0sCisgICAgeyA4
LCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAg
IHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAiYWRkIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zX2FkZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnNfYWRkKSB9IH0sCi0gICAgeyAic2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNfc2l6ZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJh
ZGQiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zX2FkZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnNfYWRkKSB9IH0sCisgICAgeyAic2l6ZSIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCiAgICAgeyAiZGVsZXRlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fZGVsZXRlKSwgKGlu
dHB0cl90KSAoMCkgfSB9LAotICAgIHsgImhhcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVu
Y3Rpb25faGFzKSwgKGludHB0cl90KSAoMSkgfSB9LAotICAgIHsgImVudHJpZXMiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXMpLCAoaW50cHRyX3QpICgwKSB9IH0sCi0g
ICAgeyAia2V5cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fa2V5cyksIChpbnRw
dHJfdCkgKDApIH0gfSwKLSAgICB7ICJ2YWx1ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpG
dW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oanNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1
bmN0aW9uX3ZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKLSAgICB7ICJmb3JFYWNoIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9mb3JFYWNoKSwgKGludHB0cl90KSAoMSkgfSB9
LAotICAgIHsgImNsZWFyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9jbGVhciks
IChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJoYXMiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9oYXMpLCAoaW50cHRy
X3QpICgxKSB9IH0sCisgICAgeyAiZW50cmllcyIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U2V0TGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXMpLCAoaW50cHRy
X3QpICgwKSB9IH0sCisgICAgeyAia2V5cyIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uX2tleXMpLCAoaW50cHRyX3QpICgw
KSB9IH0sCisgICAgeyAidmFsdWVzIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fdmFsdWVzKSwgKGludHB0cl90KSAoMCkg
fSB9LAorICAgIHsgImZvckVhY2giLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVGdW5jdGlvbl9mb3JFYWNoKSwgKGludHB0cl90KSAoMSkg
fSB9LAorICAgIHsgImNsZWFyIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zUHJvdG90eXBlRnVuY3Rpb25fY2xlYXIpLCAoaW50cHRyX3QpICgwKSB9IH0s
CiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9uc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUpIH07Citz
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnNQcm90b3R5cGVUYWJsZSA9IHsgMTAsIDMxLCB0cnVlLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zOjppbmZvKCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnNQcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uc1Byb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3Rv
dHlwZSkgfTsKIAogdm9pZCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9uczo6aW5mbygpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBhdXRv
JiBlbnRyaWVzID0gdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1Ymxp
Y05hbWUoKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnR5KHZtLCBpbmZvKCksIGVudHJpZXMsICpp
bmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KGVudHJpZXMpLCAqdGhpcyk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sLCBnZXREaXJlY3Qodm0sIGVudHJpZXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfVE9fU1RSSU5HX1RBR19X
SVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3Bw
CShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMSArODMs
MTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0m
KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9
OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJQ
cm90b3R5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNU
ZXN0U3RyaW5naWZpZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyPjsKIAordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBK
U1Rlc3RTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZp
ZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdp
ZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5n
aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTAzLDcgKzEwNiwxNSBA
QCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJET01Db25zCiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
IH0KIAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQ
cm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVz
dFN0cmluZ2lmaWVyUHJvdG90eXBlVGFibGVJbmRleFs0XSA9IHsKKyAgICB7IDEsIC0xIH0sCisg
ICAgeyAwLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKK307CisKIAog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlVGFi
bGVWYWx1ZXNbXSA9CiB7CkBAIC0xMTEsNyArMTIyLDggQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdFN0cmluZwogICAgIHsgInRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTdHJpbmdpZmllclBy
b3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIAotY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
U3RyaW5naWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZVRhYmxlID0geyAyLCAzLCB0cnVlLCBK
U1Rlc3RTdHJpbmdpZmllcjo6aW5mbygpLCBKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZVRhYmxl
VmFsdWVzLCBKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENs
YXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFN0cmlu
Z2lmaWVyIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlVGFibGUs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGUp
IH07CiAKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTEgKzgzLDE0IEBAIHByaXZhdGU6CiAgICAg
fQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJv
dG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZTo6QmFz
ZSk7CiAKIHVzaW5nIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uRE9NQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbj47CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0
U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25ET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb25ET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKQEAgLTEwMyw3ICsxMDYsMTUgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltbwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3Rv
dHlwZSAqLworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
blByb3RvdHlwZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAxLCAtMSB9LAorICAgIHsgMCwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQogewpAQCAtMTExLDcgKzEyMiw4IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RTdHJpbmcKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl90b1N0cmluZyksIChpbnRw
dHJfdCkgKDApIH0gfSwKIH07CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlw
ZSkgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb25Qcm90b3R5cGVUYWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb246OmluZm8oKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb25Qcm90b3R5cGVUYWJsZVZhbHVlcywgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb25Qcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbiIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvblByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlKSB9Owog
CiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDExICs4NCwxNCBAQCBwcml2YXRlOgogICAg
IH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90
eXBlLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlOjpCYXNlKTsKIAog
dXNpbmcgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkRPTUNvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbj47CiAKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbkRPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbkRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkRPTUNvbnN0cnVjdG9yKSB9
OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkRP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xMDQsNyArMTA3LDE5IEBAIHRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3AKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0v
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlw
ZSAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZVRhYmxlSW5kZXhbOF0gPSB7CisgICAgeyAxLCAt
MSB9LAorICAgIHsgMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAyLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorfTsKKwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewpAQCAtMTEzLDcg
KzEyOCw4IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RTdHJpbmcKICAgICB7
ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0
aW9uX3RvU3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
UHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uUHJvdG90eXBlVGFibGUgPSB7IDMsIDcsIHRydWUsIEpTVGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb246OmluZm8oKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
blByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJv
dG90eXBlVGFibGVJbmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Q
cm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxl
bWVudGVkQXMuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTEgKzg0LDE0IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1By
b3RvdHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBl
OjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+OwogCit0ZW1wbGF0ZTw+IGNvbnN0IHVu
c2lnbmVkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0RPTUNvbnN0cnVj
dG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzRE9N
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0RPTUNvbnN0cnVjdG9y
KSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEwNCw3ICsxMDcs
MTkgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aQogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFzaCB0YWJsZSBm
b3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVUYWJsZUluZGV4
WzhdID0geworICAgIHsgMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgMiwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKK307CisKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRh
YmxlVmFsdWVzW10gPQogewpAQCAtMTEzLDcgKzEyOCw4IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3RTdHJpbmcKICAgICB7ICJ0b1N0cmluZyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcpLCAoaW50cHRy
X3QpICgwKSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXNQcm90b3R5cGUpIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRhYmxlID0geyAzLCA3LCB0cnVlLCBKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OmluZm8oKSwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRhYmxlSW5kZXggfTsKK2Nv
bnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMi
LCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlKSB9OwogCiB2b2lkIEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMSArODMsMTQgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nUHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmdQcm90b3R5cGU6OkJhc2UpOwogCiB1c2luZyBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz47CiAKK3Rl
bXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nRE9NQ29uc3RydWN0b3I6OlN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uTmFtZWRUb1N0cmluZyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQpAQCAtMTAzLDcgKzEwNiwxNSBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICov
CisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1By
b3RvdHlwZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAxLCAtMSB9LAorICAgIHsgMCwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCit9OworCiAKIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90
b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKQEAgLTExMSw3ICsxMjIsOCBAQCBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0U3RyaW5nCiAgICAgeyAidG9TdHJpbmciLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uX3RvU3RyaW5nKSwg
KGludHB0cl90KSAoMCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVUYWJsZSA9IHsgMiwgMywgdHJ1
ZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjppbmZvKCksIEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZVRhYmxlVmFsdWVzLCBK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVUYWJsZUluZGV4
IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZ1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZSkgfTsKIAogdm9pZCBK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTEgKzg1LDE0IEBAIHByaXZhdGU6
CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogfTsKIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGVQcm90b3R5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGU6
OkJhc2UpOwogCiB1c2luZyBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlRE9NQ29u
c3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlPjsKIAordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBKU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OlN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKQEAgLTEwNSwxNiArMTA4LDI5IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmwKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5
cGUgKi8KKy8qIEhhc2ggdGFibGUgZm9yIFByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3Qgc3Ry
dWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVBy
b3RvdHlwZVRhYmxlSW5kZXhbOF0gPSB7CisgICAgeyAxLCAtMSB9LAorICAgIHsgMCwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorfTsKKwogCiBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0g
ICAgeyAiaWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlX2lkZW50aWZpZXIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiaWRl
bnRpZmllciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZV9pZGVu
dGlmaWVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4obnVsbHB0cikgfSB9LAogICAgIHsgInRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25fdG9TdHJpbmcpLCAoaW50cHRyX3QpICgw
KSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGUpIH07CitzdGF0
aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90
b3R5cGVUYWJsZSA9IHsgMywgNywgdHJ1ZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZTo6aW5mbygpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBl
VGFibGVWYWx1ZXMsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVU
YWJsZUluZGV4IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZVByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NiwxMSArODYsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBK
U0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGUs
IEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlOjpCYXNlKTsKIAog
dXNpbmcgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVET01Db25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlPjsKIAordGVtcGxhdGU8PiBjb25zdCB1bnNpZ25lZCBKU1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjpTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQpAQCAtMTA2LDE2ICsxMDksMjkgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaQogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
LworLyogSGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg
Q29tcGFjdEhhc2hJbmRleCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3Rv
dHlwZVRhYmxlSW5kZXhbOF0gPSB7CisgICAgeyAxLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorfTsKKwogCiBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAg
ICB7ICJpZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZV9pZGVudGlm
aWVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVfaWRlbnRpZmllcikgfSB9
LAorICAgIHsgImlkZW50aWZpZXIiLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZV9pZGVudGlmaWVyKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVfaWRlbnRpZmllcikgfSB9LAogICAgIHsgInRvU3RyaW5n
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uX3Rv
U3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlUHJvdG90eXBlKSB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZVRhYmxlID0geyAzLCA3LCB0cnVlLCBKU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6aW5mbygpLCBKU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZVRhYmxlVmFsdWVzLCBKU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNzSW5m
byBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZTo6c19pbmZvID0g
eyAiVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlIiwgJkJhc2U6OnNfaW5mbywgJkpT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlVGFibGUsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQ
cm90b3R5cGUpIH07CiAKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDMyICsx
MzAsMTMgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0VHlwZWRlZnNQ
cm90b3R5cGUsIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0
VHlwZWRlZnNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0VHlwZWRlZnM+
OwogCi0vKiBIYXNoIHRhYmxlICovCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1Rlc3RUeXBlZGVmc1RhYmxlSW5kZXhbMl0gPSB7Ci0gICAgeyAtMSwgLTEgfSwKLSAg
ICB7IC0xLCAtMSB9LAotfTsKLQotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
VHlwZWRlZnNUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAs
IDAgfSB9Ci19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFR5cGVkZWZzVGFibGUg
PSB7IDAsIDEsIGZhbHNlLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpLCBKU1Rlc3RUeXBlZGVmc1Rh
YmxlVmFsdWVzLCBKU1Rlc3RUeXBlZGVmc1RhYmxlSW5kZXggfTsKLS8qIEhhc2ggdGFibGUgZm9y
IGNvbnN0cnVjdG9yICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RUeXBl
ZGVmc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiVGVzdFN1Yk9iaiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcl9UZXN0U3ViT2JqKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotfTsKLQog
dGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0
VHlwZWRlZnNET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTg0LDcgKzE2NSw4IEBAIHRlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF8KIH0KIEpTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9O
KEpTVGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTVGVzdFR5cGVkZWZzRE9N
Q29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RUeXBlZGVmcyIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
VHlwZWRlZnNET01Db25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgdW5zaWduZWQgSlNU
ZXN0VHlwZWRlZnNET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKK3RlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RU
eXBlZGVmcyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGFibGUs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0VHlwZWRlZnNET01Db25zdHJ1Y3Rv
cikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKQEAgLTE5NywyMCArMTc5LDkxIEBAIHRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RUeXBlZGVmc0RPTUNvbnN0cnUKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0VHlwZWRlZnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVGVzdFR5cGVkZWZzIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDMpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAg
ICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdFR5cGVkZWZzOjppbmZvKCksIEpTVGVz
dFR5cGVkZWZzQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIHJlaWZ5U3RhdGlj
UHJvcGVydGllcyh2bSwgbnVsbHB0ciwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRhYmxlVmFs
dWVzLCAqdGhpcyk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyogSGFz
aCB0YWJsZSBmb3IgUHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZVRhYmxlSW5kZXhbNjddID0geworICAgIHsg
MiwgNjQgfSwKKyAgICB7IDE5LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDksIDY1IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgNSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTEsIC0xIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTgsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDEyLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIDY2IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE1LCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgNiwgLTEgfSwKKyAgICB7IDgsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMTQsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIwLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyA0LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxNiwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyA3LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEwLCAt
MSB9LAorICAgIHsgMTMsIC0xIH0sCisgICAgeyAxNywgLTEgfSwKK307CisKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCi0gICAgeyAidW5zaWduZWRMb25nTG9uZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5cGVkZWZzX3Vuc2ln
bmVkTG9uZ0xvbmdBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0VHlwZWRlZnNfdW5zaWduZWRMb25nTG9uZ0F0dHIpIH0g
fSwKLSAgICB7ICJzZXJpYWxpemVkU2NyaXB0VmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5cGVkZWZzX3NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdFR5cGVkZWZzX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgfSB9LAot
ICAgIHsgImF0dHJpYnV0ZVdpdGhDbGFtcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0VHlwZWRlZnNfYXR0cmlidXRlV2l0aENsYW1w
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0VHlwZWRlZnNfYXR0cmlidXRlV2l0aENsYW1wKSB9IH0sCi0gICAgeyAiYXR0cmli
dXRlV2l0aENsYW1wSW5UeXBlZGVmIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RUeXBlZGVmc19hdHRyaWJ1dGVXaXRoQ2xhbXBJblR5
cGVkZWYpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RUeXBlZGVmc19hdHRyaWJ1dGVXaXRoQ2xhbXBJblR5cGVkZWYpIH0gfSwK
LSAgICB7ICJidWZmZXJTb3VyY2VBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RUeXBlZGVmc19idWZmZXJTb3VyY2VBdHRyKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0VHlwZWRlZnNfYnVmZmVyU291cmNlQXR0cikgfSB9LAotICAgIHsgImRvbVRpbWVTdGFt
cEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdFR5cGVkZWZzX2RvbVRpbWVTdGFtcEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RUeXBlZGVmc19kb21U
aW1lU3RhbXBBdHRyKSB9IH0sCisgICAgeyAidW5zaWduZWRMb25nTG9uZ0F0dHIiLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RUeXBlZGVmc191bnNpZ25lZExvbmdMb25nQXR0
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdFR5cGVkZWZzX3Vuc2lnbmVkTG9uZ0xvbmdBdHRyKSB9IH0sCisgICAgeyAic2Vy
aWFsaXplZFNjcmlwdFZhbHVlIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
VHlwZWRlZnNfc2VyaWFsaXplZFNjcmlwdFZhbHVlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0VHlwZWRlZnNfc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKSB9IH0sCisgICAgeyAiYXR0cmlidXRlV2l0aENsYW1wIiwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0VHlwZWRlZnNfYXR0cmlidXRlV2l0aENsYW1wKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0VHlwZWRlZnNfYXR0cmlidXRlV2l0aENsYW1wKSB9IH0sCisgICAgeyAiYXR0cmlidXRl
V2l0aENsYW1wSW5UeXBlZGVmIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
VHlwZWRlZnNfYXR0cmlidXRlV2l0aENsYW1wSW5UeXBlZGVmKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0VHlwZWRlZnNfYXR0
cmlidXRlV2l0aENsYW1wSW5UeXBlZGVmKSB9IH0sCisgICAgeyAiYnVmZmVyU291cmNlQXR0ciIs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5cGVkZWZzX2J1ZmZlclNvdXJj
ZUF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RUeXBlZGVmc19idWZmZXJTb3VyY2VBdHRyKSB9IH0sCisgICAgeyAiZG9t
VGltZVN0YW1wQXR0ciIsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5cGVk
ZWZzX2RvbVRpbWVTdGFtcEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RUeXBlZGVmc19kb21UaW1lU3RhbXBBdHRyKSB9
IH0sCiAgICAgeyAiZnVuYyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbl9mdW5jKSwg
KGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInNldFNoYWRvdyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbl9zZXRTaGFkb3cpLCAoaW50cHRyX3QpICgzKSB9IH0sCiAgICAgeyAibWV0
aG9kV2l0aFNlcXVlbmNlQXJnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uX21ldGhv
ZFdpdGhTZXF1ZW5jZUFyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKQEAgLTIyNyw3ICsyODAsOCBA
QCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0VHlwZWRlCiAgICAgeyAiY2FsbFdp
dGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25fY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUpLCAoaW50cHRyX3QpICgx
KSB9IH0sCiB9OwogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIlRlc3RUeXBlZGVmcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUpIH07CitzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlVGFibGUgPSB7IDIxLCA2Mywg
dHJ1ZSwgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSwgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGVUYWJs
ZVZhbHVlcywgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25zdCBDbGFz
c0luZm8gSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RUeXBlZGVmcyIs
ICZCYXNlOjpzX2luZm8sICZKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZVRhYmxlLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKSB9OwogCiB2b2lkIEpT
VGVzdFR5cGVkZWZzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CkBAIC0yMzYs
NyArMjkwLDcgQEAgdm9pZCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYQogICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCi1jb25zdCBDbGFz
c0luZm8gSlNUZXN0VHlwZWRlZnM6OnNfaW5mbyA9IHsgIlRlc3RUeXBlZGVmcyIsICZCYXNlOjpz
X2luZm8sICZKU1Rlc3RUeXBlZGVmc1RhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdFR5cGVkZWZzKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFR5cGVkZWZzOjpzX2lu
Zm8gPSB7ICJUZXN0VHlwZWRlZnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFR5cGVkZWZzKSB9OwogCiBKU1Rlc3RUeXBlZGVmczo6
SlNUZXN0VHlwZWRlZnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0VHlwZWRlZnM+JiYgaW1wbCkKICAgICA6IEpTRE9NV3JhcHBl
cjxUZXN0VHlwZWRlZnM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xv
YmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjc5NTAzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw0MSArNjMsNyBAQCBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtlCiAKIHVzaW5nIEpTV29ya2VyR2xvYmFsU2NvcGVET01D
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTV29ya2VyR2xv
YmFsU2NvcGU+OwogCi0vKiBIYXNoIHRhYmxlICovCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29t
cGFjdEhhc2hJbmRleCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFsxOF0gPSB7Ci0gICAg
eyAtMSwgLTEgfSwKLSAgICB7IDAsIDE2IH0sCi0gICAgeyA1LCAtMSB9LAotICAgIHsgLTEsIC0x
IH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMywgLTEgfSwKLSAgICB7IC0x
LCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9
LAotICAgIHsgNCwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMSwgMTcgfSwKLSAgICB7
IDIsIC0xIH0sCi19OwotCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1dvcmtlckds
b2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRUb1dvcmtlckFuZFdpbmRv
d0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVfVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3ROb2RlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1dvcmtlckdsb2JhbFNjb3BlX1Rlc3ROb2RlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi0gICAgeyAi
VGVzdE9iamVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29wZV9UZXN0T2JqZWN0Q29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCi0gICAgeyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNXb3JrZXJHbG9iYWxTY29wZV9UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCi0gICAgeyAiV29ya2VyR2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFs
U2NvcGVfV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLX07Ci0KLXN0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyA2LCAxNSwgdHJ1ZSwg
SlNXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1
ZXMsIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4IH07Cit0ZW1wbGF0ZTw+IGNvbnN0IHVu
c2lnbmVkIEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6U3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTV29y
a2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiV29ya2VyR2xvYmFsU2Nv
cGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1Zh
bHVlIEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpA
QCAtMTEyLDcgKzc4LDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVET01D
bwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiB9CiAKLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworLyog
SGFzaCB0YWJsZSBmb3IgUHJvdG90eXBlICovCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVJbmRleFsyXSA9IHsK
ICAgICB7IC0xLCAtMSB9LApAQCAtMTM1LDcgKzEwMSw0MiBAQCB2b2lkIEpTV29ya2VyR2xvYmFs
U2NvcGVQcm90b3R5cGU6OmZpbmlzCiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFO
U0lUSU9OKCk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1dvcmtlckdsb2JhbFNjb3BlOjpzX2lu
Zm8gPSB7ICJXb3JrZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sICZKU1dvcmtlckdsb2Jh
bFNjb3BlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3JrZXJHbG9iYWxT
Y29wZSkgfTsKKy8qIEhhc2ggdGFibGUgZm9yIEluc3RhbmNlICovCisKK3N0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1dvcmtlckdsb2JhbFNjb3BlSW5zdGFuY2VUYWJsZUlu
ZGV4WzE4XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgMTYgfSwKKyAgICB7IDUsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAz
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA0LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAxLCAxNyB9LAorICAgIHsgMiwgLTEgfSwKK307CisKKworc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGVJbnN0YW5jZVRhYmxlVmFsdWVzW10gPQoreworICAg
IHsgIkV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29w
ZV9FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51bGxwdHIpIH0gfSwKKyAgICB7
ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckds
b2JhbFNjb3BlX1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KG51
bGxwdHIpIH0gfSwKKyAgICB7ICJUZXN0Tm9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29w
ZV9UZXN0Tm9kZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikgfSB9LAorICAgIHsgIlRlc3RPYmplY3QiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVfVGVzdE9iamVjdENvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikg
fSB9LAorICAgIHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2Vy
R2xvYmFsU2NvcGVfVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4obnVsbHB0cikg
fSB9LAorICAgIHsgIldvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNj
b3BlX1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihudWxscHRyKSB9IH0sCit9OworCitzdGF0
aWMgY29uc3QgSGFzaFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVJbnN0YW5jZVRhYmxlID0geyA2
LCAxNSwgdHJ1ZSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtlckdsb2JhbFNj
b3BlSW5zdGFuY2VUYWJsZVZhbHVlcywgSlNXb3JrZXJHbG9iYWxTY29wZUluc3RhbmNlVGFibGVJ
bmRleCB9OworY29uc3QgQ2xhc3NJbmZvIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNfaW5mbyA9IHsg
Ildvcmtlckdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgJkpTV29ya2VyR2xvYmFsU2NvcGVJ
bnN0YW5jZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV29ya2VyR2xvYmFs
U2NvcGUpIH07CiAKIEpTV29ya2VyR2xvYmFsU2NvcGU6OkpTV29ya2VyR2xvYmFsU2NvcGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiYmIGltcGwp
CiAgICAgOiBKU0V2ZW50VGFyZ2V0KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW1wbCkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI3OTUwMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDggQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhh
c1N0YXRpY1Byb3BlcnR5VGFibGU7CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNXb3JrZXJHbG9iYWxTY29wZVBy
b3RvdHlwZTo6QmFzZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAko
cmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsMjAgKzUz
LDcgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNXb3JrbAogCiB1c2luZyBK
U1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNXb3JrbGV0R2xvYmFsU2NvcGU+OwogCi0vKiBIYXNoIHRhYmxlICovCi0K
LXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1dvcmtsZXRHbG9iYWxTY29w
ZVRhYmxlSW5kZXhbMl0gPSB7Ci0gICAgeyAwLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi19Owot
Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1dvcmtsZXRHbG9iYWxTY29wZVRhYmxl
VmFsdWVzW10gPQotewotICAgIHsgIldvcmtsZXRHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3Jr
bGV0R2xvYmFsU2NvcGVfV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCi19Owot
Ci1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3BlVGFibGUgPSB7IDEs
IDEsIHRydWUsIEpTV29ya2xldEdsb2JhbFNjb3BlOjppbmZvKCksIEpTV29ya2xldEdsb2JhbFNj
b3BlVGFibGVWYWx1ZXMsIEpTV29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleCB9OwordGVtcGxh
dGU8PiBjb25zdCB1bnNpZ25lZCBKU1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
V29ya2xldEdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9Owog
CiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQpAQCAtODEsNyArNjgsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNXb3Jr
bGV0R2xvYmFsU2NvcGVET01DCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCisvKiBIYXNoIHRhYmxlIGZvciBQcm90b3R5cGUgKi8KIAogc3RhdGljIGNv
bnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTV29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBl
VGFibGVJbmRleFsyXSA9IHsKICAgICB7IC0xLCAtMSB9LApAQCAtMTA0LDcgKzkxLDIxIEBAIHZv
aWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGU6OmZpbmkKICAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTV29ya2xl
dEdsb2JhbFNjb3BlOjpzX2luZm8gPSB7ICJXb3JrbGV0R2xvYmFsU2NvcGUiLCAmQmFzZTo6c19p
bmZvLCAmSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZSkgfTsKKy8qIEhhc2ggdGFibGUgZm9yIEluc3RhbmNl
ICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1dvcmtsZXRHbG9i
YWxTY29wZUluc3RhbmNlVGFibGVJbmRleFsyXSA9IHsKKyAgICB7IDAsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKK307CisKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTV29ya2xldEds
b2JhbFNjb3BlSW5zdGFuY2VUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJXb3JrbGV0R2xvYmFs
U2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2xldEdsb2JhbFNjb3BlX1dvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4obnVsbHB0cikgfSB9LAorfTsKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dv
cmtsZXRHbG9iYWxTY29wZUluc3RhbmNlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTV29ya2xldEds
b2JhbFNjb3BlOjppbmZvKCksIEpTV29ya2xldEdsb2JhbFNjb3BlSW5zdGFuY2VUYWJsZVZhbHVl
cywgSlNXb3JrbGV0R2xvYmFsU2NvcGVJbnN0YW5jZVRhYmxlSW5kZXggfTsKK2NvbnN0IENsYXNz
SW5mbyBKU1dvcmtsZXRHbG9iYWxTY29wZTo6c19pbmZvID0geyAiV29ya2xldEdsb2JhbFNjb3Bl
IiwgJkJhc2U6OnNfaW5mbywgJkpTV29ya2xldEdsb2JhbFNjb3BlSW5zdGFuY2VUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZSkgfTsKIAogSlNX
b3JrbGV0R2xvYmFsU2NvcGU6OkpTV29ya2xldEdsb2JhbFNjb3BlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFJlZjxXb3JrbGV0R2xvYmFsU2NvcGU+JiYgaW1wbCkKICAgICA6IEpTRXZl
bnRUYXJnZXQodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmts
ZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNzk1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5
KQpAQCAtOTksNiArOTksOCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJv
cGVydHlUYWJsZTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1dv
cmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGU6
OkJhc2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRp
bmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50
Q29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjc5NTAzKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+IG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzOwogICAgIE1vY2tQYXltZW50Q29udGFjdEZp
ZWxkcyBtX3JlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHM7CiAgICAgTW9ja1BheW1lbnRDb250
YWN0RmllbGRzIG1fcmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHM7Ci0gICAgYm9vbCBtX3N1
cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgeyB0cnVlIH07CisgICAgYm9vbCBtX3N1cHBvcnRz
VW5yZXN0cmljdGVkQXBwbGVQYXkgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShBUFBMRV9QQVlfSU5T
VEFMTE1FTlRTKQogICAgIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1faW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOwogI2VuZGlmCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzk1MDMpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAyMS0wNy0wMiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAg
ICAgICAgW1dlYklETF0gUmV3b3JrIHJ1bnRpbWUgZW5hYmxlZCBwcm9wZXJ0aWVzIGxldmVyYWdp
bmcgUHJvcGVydHlDYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI3Mjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2RvbS9pZGxoYXJuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mtd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaWRsaGFy
bmVzcy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2lkbGhhcm5lc3MuaHR0cHMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9pZGxoYXJuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93cGUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2RvbS9pZGxoYXJuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wNy0wMiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzk0ODcuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9pZGxoYXJuZXNzLmh0dHBzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9pZGxoYXJuZXNzLmh0dHBzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMjc5NTAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaWRsaGFybmVzcy5odHRwcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUwNTcsNyArNTA1Nyw3IEBAIFBBU1MgV29ya2xl
dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHIKIFBBU1MgV29ya2xldCBpbnRlcmZhY2Ugb2Jq
ZWN0IGxlbmd0aAogUEFTUyBXb3JrbGV0IGludGVyZmFjZSBvYmplY3QgbmFtZQogUEFTUyBXb3Jr
bGV0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90
b3R5cGUgb2JqZWN0Ci1GQUlMIFdvcmtsZXQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3Bl
cnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3Bl
cnR5IGFzc2VydF9vd25fcHJvcGVydHk6IFdvcmtsZXQucHJvdG90eXBlIGRvZXMgbm90IGhhdmUg
b3duIHByb3BlcnR5ICJjb25zdHJ1Y3RvciIgZXhwZWN0ZWQgcHJvcGVydHkgImNvbnN0cnVjdG9y
IiBtaXNzaW5nCitQQVNTIFdvcmtsZXQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRp
ZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5
CiBQQVNTIFdvcmtsZXQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50
ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5CiBGQUlMIFdv
cmtsZXQgaW50ZXJmYWNlOiBvcGVyYXRpb24gYWRkTW9kdWxlKFVTVlN0cmluZywgb3B0aW9uYWwg
V29ya2xldE9wdGlvbnMpIGFzc2VydF9vd25fcHJvcGVydHk6IGludGVyZmFjZSBwcm90b3R5cGUg
b2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJvcGVydHkgImFk
ZE1vZHVsZSIgbWlzc2luZwogUEFTUyBTdG9yYWdlIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBw
cm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9pZGxoYXJu
ZXNzLmh0dHBzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaWRsaGFy
bmVzcy5odHRwcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3OTUwMykKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy13azIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Rv
bS9pZGxoYXJuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTAxMiw3
ICs1MDEyLDcgQEAgUEFTUyBXb3JrbGV0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcgogUEFT
UyBXb3JrbGV0IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoCiBQQVNTIFdvcmtsZXQgaW50ZXJmYWNl
IG9iamVjdCBuYW1lCiBQQVNTIFdvcmtsZXQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3Bl
cnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QKLUZBSUwgV29ya2xldCBpbnRlcmZh
Y2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVj
dCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgYXNzZXJ0X293bl9wcm9wZXJ0eTogV29ya2xldC5w
cm90b3R5cGUgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgImNvbnN0cnVjdG9yIiBleHBlY3Rl
ZCBwcm9wZXJ0eSAiY29uc3RydWN0b3IiIG1pc3NpbmcKK1BBU1MgV29ya2xldCBpbnRlcmZhY2U6
IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdz
ICJjb25zdHJ1Y3RvciIgcHJvcGVydHkKIFBBU1MgV29ya2xldCBpbnRlcmZhY2U6IGV4aXN0ZW5j
ZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29w
YWJsZXMgcHJvcGVydHkKIEZBSUwgV29ya2xldCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhZGRNb2R1
bGUoVVNWU3RyaW5nLCBvcHRpb25hbCBXb3JrbGV0T3B0aW9ucykgYXNzZXJ0X293bl9wcm9wZXJ0
eTogaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlv
biBleHBlY3RlZCBwcm9wZXJ0eSAiYWRkTW9kdWxlIiBtaXNzaW5nCiBQQVNTIFN0b3JhZ2UgaW50
ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdApJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvZG9tL2lkbGhhcm5lc3MuaHR0cHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2RvbS9pZGxoYXJuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
Mjc5NTAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2lkbGhhcm5lc3MuaHR0cHMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC01MDIyLDcgKzUwMjIsNyBAQCBQQVNTIFdvcmtsZXQgaW50ZXJmYWNl
OiBleGlzdGVuY2UgYW5kIHByCiBQQVNTIFdvcmtsZXQgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGgK
IFBBU1MgV29ya2xldCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUKIFBBU1MgV29ya2xldCBpbnRlcmZh
Y2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVj
dAotRkFJTCBXb3JrbGV0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGlu
dGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSBhc3NlcnRf
b3duX3Byb3BlcnR5OiBXb3JrbGV0LnByb3RvdHlwZSBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0
eSAiY29uc3RydWN0b3IiIGV4cGVjdGVkIHByb3BlcnR5ICJjb25zdHJ1Y3RvciIgbWlzc2luZwor
UEFTUyBXb3JrbGV0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eQogUEFTUyBXb3Jr
bGV0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90
b3R5cGUgb2JqZWN0J3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0eQogRkFJTCBXb3JrbGV0IGludGVy
ZmFjZTogb3BlcmF0aW9uIGFkZE1vZHVsZShVU1ZTdHJpbmcsIG9wdGlvbmFsIFdvcmtsZXRPcHRp
b25zKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNz
aW5nIG5vbi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJhZGRNb2R1bGUiIG1p
c3NpbmcKIFBBU1MgU3RvcmFnZSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBv
ZiBpbnRlcmZhY2Ugb2JqZWN0CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaWRsaGFybmVzcy5odHRwcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2lkbGhhcm5lc3MuaHR0cHMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzk1MDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaWRsaGFybmVz
cy5odHRwcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUwMjIsNyArNTAyMiw3IEBA
IFBBU1MgV29ya2xldCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHIKIFBBU1MgV29ya2xldCBp
bnRlcmZhY2Ugb2JqZWN0IGxlbmd0aAogUEFTUyBXb3JrbGV0IGludGVyZmFjZSBvYmplY3QgbmFt
ZQogUEFTUyBXb3JrbGV0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGlu
dGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0Ci1GQUlMIFdvcmtsZXQgaW50ZXJmYWNlOiBleGlzdGVu
Y2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3Ry
dWN0b3IiIHByb3BlcnR5IGFzc2VydF9vd25fcHJvcGVydHk6IFdvcmtsZXQucHJvdG90eXBlIGRv
ZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJjb25zdHJ1Y3RvciIgZXhwZWN0ZWQgcHJvcGVydHkg
ImNvbnN0cnVjdG9yIiBtaXNzaW5nCitQQVNTIFdvcmtsZXQgaW50ZXJmYWNlOiBleGlzdGVuY2Ug
YW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0
b3IiIHByb3BlcnR5CiBQQVNTIFdvcmtsZXQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3Bl
cnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3Bl
cnR5CiBGQUlMIFdvcmtsZXQgaW50ZXJmYWNlOiBvcGVyYXRpb24gYWRkTW9kdWxlKFVTVlN0cmlu
Zywgb3B0aW9uYWwgV29ya2xldE9wdGlvbnMpIGFzc2VydF9vd25fcHJvcGVydHk6IGludGVyZmFj
ZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQg
cHJvcGVydHkgImFkZE1vZHVsZSIgbWlzc2luZwogUEFTUyBTdG9yYWdlIGludGVyZmFjZTogZXhp
c3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL3dwZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9t
L2lkbGhhcm5lc3MuaHR0cHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3dwZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2lk
bGhhcm5lc3MuaHR0cHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzk1MDMpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93cGUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Rv
bS9pZGxoYXJuZXNzLmh0dHBzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTA1Nyw3
ICs1MDU3LDcgQEAgUEFTUyBXb3JrbGV0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcgogUEFT
UyBXb3JrbGV0IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoCiBQQVNTIFdvcmtsZXQgaW50ZXJmYWNl
IG9iamVjdCBuYW1lCiBQQVNTIFdvcmtsZXQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3Bl
cnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QKLUZBSUwgV29ya2xldCBpbnRlcmZh
Y2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVj
dCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgYXNzZXJ0X293bl9wcm9wZXJ0eTogV29ya2xldC5w
cm90b3R5cGUgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgImNvbnN0cnVjdG9yIiBleHBlY3Rl
ZCBwcm9wZXJ0eSAiY29uc3RydWN0b3IiIG1pc3NpbmcKK1BBU1MgV29ya2xldCBpbnRlcmZhY2U6
IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdz
ICJjb25zdHJ1Y3RvciIgcHJvcGVydHkKIFBBU1MgV29ya2xldCBpbnRlcmZhY2U6IGV4aXN0ZW5j
ZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29w
YWJsZXMgcHJvcGVydHkKIEZBSUwgV29ya2xldCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhZGRNb2R1
bGUoVVNWU3RyaW5nLCBvcHRpb25hbCBXb3JrbGV0T3B0aW9ucykgYXNzZXJ0X293bl9wcm9wZXJ0
eTogaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlv
biBleHBlY3RlZCBwcm9wZXJ0eSAiYWRkTW9kdWxlIiBtaXNzaW5nCiBQQVNTIFN0b3JhZ2UgaW50
ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>