<?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>185967</bug_id>
          
          <creation_ts>2018-05-24 16:45:27 -0700</creation_ts>
          <short_desc>Rope string sweeping should avoid touching unresolved ropes</short_desc>
          <delta_ts>2018-05-30 08:29:29 -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>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1427102</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-24 16:45:27 -0700</bug_when>
    <thetext>Especially when ropes are being used in anger, a lot of JSRopeString objects are never resolved.  Thus they don&apos;t need destruction.  Since destruction is expensive, that would be useful to know.

Ropes are usually unresolved because people do something like this:

var result = &quot;&quot;;
for (things)
    result += stuff
use result

In that case, we will create a JSRopeString for each iteration of the loop, but we will only resolve the last one.  This comes up over and over again.  For example, this:

&quot;foo&quot; + bar + &quot;baz&quot; + fuzz + &quot;buzz&quot; + thingy + &quot;stuff&quot;

will create three JSRopeStrings, but only the last one will get resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427103</commentid>
    <comment_count>1</comment_count>
      <attachid>341234</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-24 16:47:21 -0700</bug_when>
    <thetext>Created attachment 341234
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427504</commentid>
    <comment_count>2</comment_count>
      <attachid>341338</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-25 15:27:45 -0700</bug_when>
    <thetext>Created attachment 341338
maybe it&apos;ll work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427566</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-25 16:41:57 -0700</bug_when>
    <thetext>This patch has a crash bug, it&apos;s not any faster, and it wastes a lot of memory.

I&apos;m investigating. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427591</commentid>
    <comment_count>4</comment_count>
      <attachid>341361</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-25 17:09:45 -0700</bug_when>
    <thetext>Created attachment 341361
seems to kinda work

But it&apos;s not a speed-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427594</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-25 17:10:39 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #4)
&gt; Created attachment 341361 [details]
&gt; seems to kinda work
&gt; 
&gt; But it&apos;s not a speed-up.

Or, rather, it&apos;s a *very small* speed-up.  I&apos;ll play with it a bit more before giving up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427778</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-26 16:57:53 -0700</bug_when>
    <thetext>Seems to not be super great for perf.  If anything, JetStream might be slower.

I think that part of the problem is that those blocks that have unresolved rope strings tend to also not be completely empty, so we have to walk over them anyway.

The high cost of creating ropes might also be so great as to dominate over the benefit of reducing sweep cost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427779</commentid>
    <comment_count>7</comment_count>
      <attachid>341413</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-26 17:04:37 -0700</bug_when>
    <thetext>Created attachment 341413
the patch

Tiny splay speed-up.  The speed-up is minuscule - around 1% - but significant.  I confirmed it in run-jsc-benchmarks, in-browser JetStream, and running the benchmark manually.  It could be an even bigger speed-up if I made bump&apos;n&apos;pop&apos;s pop path faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427780</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-26 17:06:36 -0700</bug_when>
    <thetext>Attachment 341413 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSRopeStringHeapCellType.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428437</commentid>
    <comment_count>9</comment_count>
      <attachid>341413</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-30 08:29:29 -0700</bug_when>
    <thetext>Comment on attachment 341413
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=341413&amp;action=review

r=me

&gt; Source/JavaScriptCore/heap/MarkedBlock.cpp:460
&gt; +void MarkedBlock::Handle::sweep(FreeList* freeList)

Replacing the position of `MarkedBlock::Handle::sweep` and `MarkedBlock::Handle::finishSweepWithNoDestructors` would make diff clean.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341234</attachid>
            <date>2018-05-24 16:47:21 -0700</date>
            <delta_ts>2018-05-25 15:27:45 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>41726</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgJKHJldmlzaW9uIDIz
MjE2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDE0IEBAIHB1YmxpYzoKICAgICBJc29DZWxsU2V0KElzb1N1
YnNwYWNlJiBzdWJzcGFjZSk7CiAgICAgfklzb0NlbGxTZXQoKTsKICAgICAKLSAgICBib29sIGFk
ZChIZWFwQ2VsbCogY2VsbCk7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2VsbCB3YXMgbmV3bHkg
YWRkZWQuCisgICAgYm9vbCBhZGQoSGVhcENlbGwqKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBj
ZWxsIHdhcyBuZXdseSBhZGRlZC4KICAgICAKLSAgICBib29sIHJlbW92ZShIZWFwQ2VsbCogY2Vs
bCk7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2VsbCB3YXMgcHJldmlvdXNseSBwcmVzZW50IGFu
ZCBnb3QgcmVtb3ZlZC4KKyAgICBib29sIHJlbW92ZShIZWFwQ2VsbCopOyAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGNlbGwgd2FzIHByZXZpb3VzbHkgcHJlc2VudCBhbmQgZ290IHJlbW92ZWQuCiAg
ICAgCi0gICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCogY2VsbCkgY29uc3Q7CisgICAgYm9vbCBj
b250YWlucyhIZWFwQ2VsbCopIGNvbnN0OworICAgIAorICAgIGJvb2wgY29udGFpbnMoTWFya2Vk
QmxvY2s6OkhhbmRsZSopIGNvbnN0OworICAgIEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJC
bG9jaz4qIGJpdHMoTWFya2VkQmxvY2s6OkhhbmRsZSopIGNvbnN0OwogICAgIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAkocmV2aXNpb24gMjMy
MTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsMTYgQEAgaW5saW5lIGJvb2wgSXNvQ2VsbFNldDo6
Y29udGFpbnMoSGVhcENlbAogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIGJvb2wgSXNv
Q2VsbFNldDo6Y29udGFpbnMoTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlKSBjb25zdAorewor
ICAgIHJldHVybiBtX2Jsb2Nrc1dpdGhCaXRzW2hhbmRsZS0+aW5kZXgoKV07Cit9CisKK2lubGlu
ZSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+KiBJc29DZWxsU2V0OjpiaXRzKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iaXRzW2hh
bmRsZS0+aW5kZXgoKV0uZ2V0KCk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiB2b2lk
IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCShyZXZpc2lvbiAy
MzIxNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBJc29TdWJzcGFjZTo6ZGlkUmVtb3Zl
QmxvY2soc2l6ZV90IAogICAgICAgICB9KTsKIH0KIAotdm9pZCBJc29TdWJzcGFjZTo6ZGlkQmVn
aW5Td2VlcGluZ1RvRnJlZUxpc3QoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCit2b2lkIElz
b1N1YnNwYWNlOjpkaWRTd2VlcFRvRnJlZUxpc3QoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sp
CiB7CiAgICAgbV9jZWxsU2V0cy5mb3JFYWNoKAogICAgICAgICBbJl0gKElzb0NlbGxTZXQqIHNl
dCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCShyZXZp
c2lvbiAyMzIxNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBkaWRSZXNpemVCaXRzKHNpemVfdCBuZXdTaXplKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
bW92ZUJsb2NrKHNpemVfdCBibG9ja0luZGV4KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEJlZ2lu
U3dlZXBpbmdUb0ZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFN3ZWVwVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKikgb3ZlcnJpZGU7CiAg
ICAgCiAgICAgc2l6ZV90IG1fc2l6ZTsKICAgICBCbG9ja0RpcmVjdG9yeSBtX2RpcmVjdG9yeTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlz
aW9uIDIzMjE2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDI2LDYwICs0MjYsNTkgQEAgdm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpzd2VlcChGcmVlTGlzdAogICAgIGlmIChzcGFjZSgpLT5pc01hcmtpbmcoKSkKICAg
ICAgICAgYmxvY2tGb290ZXIoKS5tX2xvY2subG9jaygpOwogICAgIAotICAgIHN1YnNwYWNlKCkt
PmRpZEJlZ2luU3dlZXBpbmdUb0ZyZWVMaXN0KHRoaXMpOwotICAgIAotICAgIGlmIChuZWVkc0Rl
c3RydWN0aW9uKSB7CisgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24pCiAgICAgICAgIHN1YnNwYWNl
KCktPmZpbmlzaFN3ZWVwKCp0aGlzLCBmcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCi0gICAgLy8gSGFuZGxlIHRoZSBuby1kZXN0cnVjdG9yIHNwZWNpYWxpemF0aW9ucyBo
ZXJlLCBzaW5jZSB3ZSBoYXZlIHRoZSBtb3N0IG9mIHRob3NlLiBUaGlzCi0gICAgLy8gZW5zdXJl
cyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IHJlLXNwZWNpYWxpemVkIGZvciBldmVyeSBkZXN0cnVjdG9y
IHNwYWNlLgotICAgIAotICAgIEVtcHR5TW9kZSBlbXB0eU1vZGUgPSB0aGlzLT5lbXB0eU1vZGUo
KTsKLSAgICBTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlID0gdGhpcy0+c2NyaWJibGVNb2RlKCk7
Ci0gICAgTmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSA9IHRoaXMtPm5ld2x5
QWxsb2NhdGVkTW9kZSgpOwotICAgIE1hcmtzTW9kZSBtYXJrc01vZGUgPSB0aGlzLT5tYXJrc01v
ZGUoKTsKLSAgICAKLSAgICBhdXRvIHRyeVNwZWNpYWxpemVkID0gWyZdICgpIC0+IGJvb2wgewot
ICAgICAgICBpZiAoc3dlZXBNb2RlICE9IFN3ZWVwVG9GcmVlTGlzdCkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHNjcmliYmxlTW9kZSAhPSBEb250U2NyaWJibGUpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChuZXdseUFsbG9jYXRlZE1vZGUg
IT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBlbHNlIHsKKyAgICAgICAgLy8gSGFuZGxlIHRoZSBuby1kZXN0cnVjdG9yIHNwZWNpYWxp
emF0aW9ucyBoZXJlLCBzaW5jZSB3ZSBoYXZlIHRoZSBtb3N0IG9mIHRob3NlLiBUaGlzCisgICAg
ICAgIC8vIGVuc3VyZXMgdGhhdCB0aGV5IGRvbid0IGdldCByZS1zcGVjaWFsaXplZCBmb3IgZXZl
cnkgZGVzdHJ1Y3RvciBzcGFjZS4KKyAgICAKKyAgICAgICAgRW1wdHlNb2RlIGVtcHR5TW9kZSA9
IHRoaXMtPmVtcHR5TW9kZSgpOworICAgICAgICBTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlID0g
dGhpcy0+c2NyaWJibGVNb2RlKCk7CisgICAgICAgIE5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFs
bG9jYXRlZE1vZGUgPSB0aGlzLT5uZXdseUFsbG9jYXRlZE1vZGUoKTsKKyAgICAgICAgTWFya3NN
b2RlIG1hcmtzTW9kZSA9IHRoaXMtPm1hcmtzTW9kZSgpOworICAgIAorICAgICAgICBhdXRvIHRy
eVNwZWNpYWxpemVkID0gWyZdICgpIC0+IGJvb2wgeworICAgICAgICAgICAgaWYgKHN3ZWVwTW9k
ZSAhPSBTd2VlcFRvRnJlZUxpc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKHNjcmliYmxlTW9kZSAhPSBEb250U2NyaWJibGUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKG5ld2x5QWxsb2NhdGVkTW9kZSAhPSBE
b2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoZW1wdHlNb2RlKSB7Ci0gICAgICAgIGNhc2UgSXNF
bXB0eToKLSAgICAgICAgICAgIHN3aXRjaCAobWFya3NNb2RlKSB7Ci0gICAgICAgICAgICBjYXNl
IE1hcmtzTm90U3RhbGU6Ci0gICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJ
c0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmli
YmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwg
SXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3Jp
YmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZSwgW10gKFZNJiwg
SlNDZWxsKikgeyB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IGNhc2UgTWFya3NTdGFsZToKLSAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUs
IElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2Ny
aWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBJ
c0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmli
YmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlLCBbXSAoVk0mLCBKU0Nl
bGwqKSB7IH0pOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgc3dp
dGNoIChlbXB0eU1vZGUpIHsKKyAgICAgICAgICAgIGNhc2UgSXNFbXB0eToKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG1hcmtzTW9kZSkgeworICAgICAgICAgICAgICAgIGNhc2UgTWFya3NOb3RT
dGFsZToKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0VtcHR5
LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBE
b2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwgSXNFbXB0
eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwg
RG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZSwgSGFzTm9EZXN0cnVjdG9y
KCksIFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIGNhc2UgTWFya3NTdGFsZToKKyAgICAgICAgICAgICAgICAg
ICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2Nr
SGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
LCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hh
c05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwg
TWFya3NTdGFsZSwgSGFzTm9EZXN0cnVjdG9yKCksIFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTm90RW1wdHk6CisgICAgICAgICAg
ICAgICAgc3dpdGNoIChtYXJrc01vZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE1hcmtzTm90
U3RhbGU6CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1w
dHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUs
IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBJc0Vt
cHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxl
LCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlLCBIYXNOb0Rlc3RydWN0
b3IoKSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgY2FzZSBNYXJrc1N0YWxlOgorICAgICAgICAgICAgICAg
ICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJs
b2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2Nh
dGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9j
a0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRl
ZCwgTWFya3NTdGFsZSwgSGFzTm9EZXN0cnVjdG9yKCksIFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE5vdEVtcHR5OgotICAgICAgICAgICAgc3dpdGNoIChtYXJrc01vZGUpIHsK
LSAgICAgICAgICAgIGNhc2UgTWFya3NOb3RTdGFsZToKLSAgICAgICAgICAgICAgICBzcGVjaWFs
aXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9EZXN0
cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05v
dFN0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVz
dHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NO
b3RTdGFsZSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgIGNhc2UgTWFya3NTdGFsZToKLSAgICAgICAgICAgICAgICBzcGVj
aWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9E
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJr
c1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVz
dHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NT
dGFsZSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfTsKICAgICAKLSAgICBpZiAodHJ5U3BlY2lhbGl6ZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gVGhlIHRlbXBsYXRlIGFyZ3VtZW50cyBkb24ndCBtYXR0ZXIgYmVj
YXVzZSB0aGUgZmlyc3Qgb25lIGlzIGZhbHNlLgotICAgIHNwZWNpYWxpemVkU3dlZXA8ZmFsc2Us
IElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUs
IEhhc05ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgZW1wdHlNb2RlLCBzd2Vl
cE1vZGUsIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRl
ZE1vZGUsIG1hcmtzTW9kZSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKKyAgICAgICAgaWYgKCF0
cnlTcGVjaWFsaXplZCgpKSB7CisgICAgICAgICAgICAvLyBUaGUgdGVtcGxhdGUgYXJndW1lbnRz
IGRvbid0IG1hdHRlciBiZWNhdXNlIHRoZSBmaXJzdCBvbmUgaXMgZmFsc2UuCisgICAgICAgICAg
ICBzcGVjaWFsaXplZFN3ZWVwPGZhbHNlLCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzTm9E
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBIYXNOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4o
ZnJlZUxpc3QsIGVtcHR5TW9kZSwgc3dlZXBNb2RlLCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIHNj
cmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlLCBtYXJrc01vZGUsIEhhc05vRGVzdHJ1Y3Rv
cigpLCBbXSAoVk0mLCBKU0NlbGwqKSB7IH0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICBzdWJzcGFjZSgpLT5k
aWRTd2VlcFRvRnJlZUxpc3QodGhpcyk7CiB9CiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6
aXNGcmVlTGlzdGVkQ2VsbChjb25zdCB2b2lkKiB0YXJnZXQpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDIzMjE2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMywxMCArMTMzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgLy8gbWlzdGFrZSBvZiBtYWtpbmcg
YSBwb3AgZnJlZWxpc3QgcmF0aGVyIHRoYW4gYSBidW1wIGZyZWVsaXN0LgogICAgICAgICB2b2lk
IHN3ZWVwKEZyZWVMaXN0Kik7CiAgICAgICAgIAotICAgICAgICAvLyBUaGlzIGlzIHRvIGJlIGNh
bGxlZCBieSBTdWJzcGFjZS4KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVzdHJveUZ1bmM+
CiAgICAgICAgIHZvaWQgZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKEZyZWVMaXN0Kiwg
Y29uc3QgRGVzdHJveUZ1bmMmKTsKICAgICAgICAgCisgICAgICAgIHN0cnVjdCBIYXNOb0Rlc3Ry
dWN0b3IgeworICAgICAgICAgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yKCkoc2l6ZV90
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSGFzRGVzdHJ1Y3RvckZ1bmMsIHR5cGVuYW1lIERlc3Ryb3lGdW5j
PgorICAgICAgICB2b2lkIGZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShGcmVlTGlzdCos
IGNvbnN0IEhhc0Rlc3RydWN0b3JGdW5jJiwgY29uc3QgRGVzdHJveUZ1bmMmKTsKKwogICAgICAg
ICB2b2lkIHVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOwogICAgICAgICAKICAgICAgICAg
dm9pZCB6YXAoY29uc3QgRnJlZUxpc3QmKTsKQEAgLTIwOSw4ICsyMTUsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIE5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUoKTsKICAgICAgICAg
TWFya3NNb2RlIG1hcmtzTW9kZSgpOwogICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCwg
RW1wdHlNb2RlLCBTd2VlcE1vZGUsIFN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUs
IE5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya3NNb2RlLCB0eXBlbmFtZSBEZXN0cm95RnVuYz4KLSAg
ICAgICAgdm9pZCBzcGVjaWFsaXplZFN3ZWVwKEZyZWVMaXN0KiwgRW1wdHlNb2RlLCBTd2VlcE1v
ZGUsIFN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9k
ZSwgTWFya3NNb2RlLCBjb25zdCBEZXN0cm95RnVuYyYpOworICAgICAgICB0ZW1wbGF0ZTxib29s
LCBFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgU3dlZXBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9k
ZSwgTmV3bHlBbGxvY2F0ZWRNb2RlLCBNYXJrc01vZGUsIHR5cGVuYW1lIEhhc0Rlc3RydWN0b3JG
dW5jLCB0eXBlbmFtZSBEZXN0cm95RnVuYz4KKyAgICAgICAgdm9pZCBzcGVjaWFsaXplZFN3ZWVw
KEZyZWVMaXN0KiwgRW1wdHlNb2RlLCBTd2VlcE1vZGUsIFN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlLCBT
Y3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya3NNb2RlLCBjb25zdCBIYXNEZXN0
cnVjdG9yRnVuYyYsIGNvbnN0IERlc3Ryb3lGdW5jJik7CiAgICAgICAgIAogICAgICAgICB2b2lk
IHNldElzRnJlZUxpc3RlZCgpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyMzIxNjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjI0LDggKzIyNCw4IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTGl2ZUMKIC8vCiAvLyBPbmx5IHRoZSBEb2VzTm90TmVlZERlc3RydWN0aW9uIG9uZSBzaG91
bGQgYmUgc3BlY2lhbGl6ZWQgYnkgTWFya2VkQmxvY2suCiAKLXRlbXBsYXRlPGJvb2wgc3BlY2lh
bGl6ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIHNwZWNpYWxpemVkRW1wdHlNb2Rl
LCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3BlY2lhbGl6ZWRTd2VlcE1vZGUsIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIHNwZWNpYWxpemVkRGVzdHJ1
Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc3BlY2lhbGl6ZWRT
Y3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBzcGVj
aWFsaXplZE5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TWFya3NNb2Rl
IHNwZWNpYWxpemVkTWFya3NNb2RlLCB0eXBlbmFtZSBEZXN0cm95RnVuYz4KLXZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcChGcmVlTGlzdCogZnJlZUxpc3QsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwRGVzdHJ1Y3Rp
b25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2Rl
IHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5l
d2x5QWxsb2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TWFya3NNb2RlIG1hcmtzTW9k
ZSwgY29uc3QgRGVzdHJveUZ1bmMmIGRlc3Ryb3lGdW5jKQordGVtcGxhdGU8Ym9vbCBzcGVjaWFs
aXplLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgc3BlY2lhbGl6ZWRFbXB0eU1vZGUs
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzcGVjaWFsaXplZFN3ZWVwTW9kZSwgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBEZXN0cnVjdGlvbk1vZGUgc3BlY2lhbGl6ZWREZXN0cnVj
dGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzcGVjaWFsaXplZFNj
cmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIHNwZWNp
YWxpemVkTmV3bHlBbGxvY2F0ZWRNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpNYXJrc01vZGUg
c3BlY2lhbGl6ZWRNYXJrc01vZGUsIHR5cGVuYW1lIEhhc0Rlc3RydWN0b3JGdW5jLCB0eXBlbmFt
ZSBEZXN0cm95RnVuYz4KK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2Vl
cChGcmVlTGlzdCogZnJlZUxpc3QsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0
eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OlN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6
OkhhbmRsZTo6TWFya3NNb2RlIG1hcmtzTW9kZSwgY29uc3QgSGFzRGVzdHJ1Y3RvckZ1bmMmIGhh
c0Rlc3RydWN0b3IsIGNvbnN0IERlc3Ryb3lGdW5jJiBkZXN0cm95RnVuYykKIHsKICAgICBpZiAo
c3BlY2lhbGl6ZSkgewogICAgICAgICBlbXB0eU1vZGUgPSBzcGVjaWFsaXplZEVtcHR5TW9kZTsK
QEAgLTI1OSw2ICsyNTksOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVk
U3dlCiAgICAgCiAgICAgbV9kaXJlY3RvcnktPnNldElzRGVzdHJ1Y3RpYmxlKE5vTG9ja2luZ05l
Y2Vzc2FyeSwgdGhpcywgZmFsc2UpOwogICAgIAorICAgIHVuc2lnbmVkIGVuZEF0b20gPSBtX2Vu
ZEF0b207CisgICAgdW5zaWduZWQgYXRvbXNQZXJDZWxsID0gbV9hdG9tc1BlckNlbGw7CisKICAg
ICBpZiAoT3B0aW9uczo6dXNlQnVtcEFsbG9jYXRvcigpCiAgICAgICAgICYmIGVtcHR5TW9kZSA9
PSBJc0VtcHR5CiAgICAgICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5l
d2x5QWxsb2NhdGVkKSB7CkBAIC0yODUsOCArMjg4LDExIEBAIHZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3BlY2lhbGl6ZWRTd2UKICAgICAgICAgaWYgKHNwYWNlKCktPmlzTWFya2luZygpKQog
ICAgICAgICAgICAgZm9vdGVyLm1fbG9jay51bmxvY2soKTsKICAgICAgICAgaWYgKGRlc3RydWN0
aW9uTW9kZSAhPSBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMpIHsKLSAgICAgICAgICAgIGZvciAoY2hh
ciogY2VsbCA9IHBheWxvYWRCZWdpbjsgY2VsbCA8IHBheWxvYWRFbmQ7IGNlbGwgKz0gY2VsbFNp
emUpCi0gICAgICAgICAgICAgICAgZGVzdHJveShjZWxsKTsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZW5kQXRvbTsgaSArPSBhdG9tc1BlckNlbGwpIHsKKyAgICAgICAgICAg
ICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmJs
b2NrLmF0b21zKClbaV0pOworICAgICAgICAgICAgICAgIGlmIChoYXNEZXN0cnVjdG9yKGkpKQor
ICAgICAgICAgICAgICAgICAgICBkZXN0cm95KGNlbGwpOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CiAgICAgICAg
ICAgICBpZiAoc2NyaWJibGVNb2RlID09IFNjcmliYmxlKQpAQCAtMzIyLDcgKzMyOCw3IEBAIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2UKICAgICAgICAgICAgICsrY291
bnQ7CiAgICAgICAgIH0KICAgICB9OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbmRB
dG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bmRBdG9tOyBpICs9IGF0b21zUGVyQ2VsbCkgewogICAgICAgICBpZiAoZW1wdHlNb2RlID09IE5v
dEVtcHR5CiAgICAgICAgICAgICAmJiAoKG1hcmtzTW9kZSA9PSBNYXJrc05vdFN0YWxlICYmIGZv
b3Rlci5tX21hcmtzLmdldChpKSkKICAgICAgICAgICAgICAgICB8fCAobmV3bHlBbGxvY2F0ZWRN
b2RlID09IEhhc05ld2x5QWxsb2NhdGVkICYmIGZvb3Rlci5tX25ld2x5QWxsb2NhdGVkLmdldChp
KSkpKSB7CkBAIC0zMzAsNiArMzM2LDkgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVj
aWFsaXplZFN3ZQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCisg
ICAgICAgIGlmICghaGFzRGVzdHJ1Y3RvcihpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAKICAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBCbG9ja0hhc0Rlc3RydWN0b3Jz
QW5kQ29sbGVjdG9ySXNSdW5uaW5nKQogICAgICAgICAgICAgZGVhZENlbGxzLmFwcGVuZChpKTsK
ICAgICAgICAgZWxzZQpAQCAtMzU4LDggKzM2Nyw4IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3BlY2lhbGl6ZWRTd2UKICAgICAgICAgZGF0YUxvZygiU2xvd2x5IHN3ZXB0IGJsb2NrICIs
IFJhd1BvaW50ZXIoJmJsb2NrKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSwgIiBhbmQg
YXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHBvaW50ZXJEdW1wKGZyZWVMaXN0KSwg
IlxuIik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIERlc3Ryb3lGdW5jPgotdm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoRnJlZUxpc3QqIGZy
ZWVMaXN0LCBjb25zdCBEZXN0cm95RnVuYyYgZGVzdHJveUZ1bmMpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBIYXNEZXN0cnVjdG9yRnVuYywgdHlwZW5hbWUgRGVzdHJveUZ1bmM+Cit2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShGcmVlTGlzdCogZnJl
ZUxpc3QsIGNvbnN0IEhhc0Rlc3RydWN0b3JGdW5jJiBoYXNEZXN0cnVjdG9yLCBjb25zdCBEZXN0
cm95RnVuYyYgZGVzdHJveUZ1bmMpCiB7CiAgICAgU3dlZXBNb2RlIHN3ZWVwTW9kZSA9IGZyZWVM
aXN0ID8gU3dlZXBUb0ZyZWVMaXN0IDogU3dlZXBPbmx5OwogICAgIFN3ZWVwRGVzdHJ1Y3Rpb25N
b2RlIGRlc3RydWN0aW9uTW9kZSA9IHRoaXMtPnN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlKCk7CkBAIC0z
ODIsMjAgKzM5MSwyMCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZpbmlzaFN3ZWVwS25v
CiAgICAgICAgICAgICBjYXNlIFN3ZWVwT25seToKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1h
cmtzTW9kZSkgewogICAgICAgICAgICAgICAgIGNhc2UgTWFya3NOb3RTdGFsZToKLSAgICAgICAg
ICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0VtcHR5LCBTd2VlcE9ubHksIEJs
b2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRl
ZCwgTWFya3NOb3RTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNE
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJr
c05vdFN0YWxlLCBkZXN0cm95RnVuYyk7CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVk
U3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250
U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVM
aXN0LCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJs
ZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZSwgaGFzRGVzdHJ1Y3Rv
ciwgZGVzdHJveUZ1bmMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgICAgICBjYXNlIE1hcmtzU3RhbGU6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxp
emVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBE
b250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVM
aXN0LCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJs
ZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZSwgZGVzdHJveUZ1bmMpOwor
ICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIElzRW1wdHksIFN3ZWVw
T25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5
QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9j
a0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQs
IE1hcmtzU3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lGdW5jKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBjYXNlIFN3ZWVwVG9GcmVl
TGlzdDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hcmtzTW9kZSkgewogICAgICAgICAgICAg
ICAgIGNhc2UgTWFya3NOb3RTdGFsZToKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRT
d2VlcDx0cnVlLCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMs
IERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZT4o
ZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywg
RG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlLCBk
ZXN0cm95RnVuYyk7CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwg
SXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJi
bGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBJ
c0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJs
ZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZSwgaGFzRGVzdHJ1Y3Rv
ciwgZGVzdHJveUZ1bmMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgICAgICBjYXNlIE1hcmtzU3RhbGU6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxp
emVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0
b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+
KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMs
IERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZSwgZGVz
dHJveUZ1bmMpOworICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIElz
RW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxl
LCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0
eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERv
ZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ry
b3lGdW5jKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpAQCAtNDA1LDIwICs0MTQsMjAgQEAgdm9pZCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpmaW5pc2hTd2VlcEtubwogICAgICAgICAgICAgY2FzZSBTd2VlcE9ubHk6CiAg
ICAgICAgICAgICAgICAgc3dpdGNoIChtYXJrc01vZGUpIHsKICAgICAgICAgICAgICAgICBjYXNl
IE1hcmtzTm90U3RhbGU6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1
ZSwgTm90RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxl
LCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwgTm90
RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlLCBkZXN0cm95RnVuYyk7CisgICAg
ICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHksIFN3ZWVwT25s
eSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxs
b2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwgTm90RW1wdHksIFN3ZWVwT25seSwgQmxv
Y2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
LCBNYXJrc05vdFN0YWxlLCBoYXNEZXN0cnVjdG9yLCBkZXN0cm95RnVuYyk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGNhc2UgTWFya3NTdGFsZToK
LSAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dl
ZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3
bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBPbmx5LCBC
bG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0
ZWQsIE1hcmtzU3RhbGUsIGRlc3Ryb3lGdW5jKTsKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lh
bGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3Jz
LCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZy
ZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2Ny
aWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGhhc0Rlc3RydWN0
b3IsIGRlc3Ryb3lGdW5jKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICBjYXNlIFN3ZWVwVG9GcmVlTGlzdDoKICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG1hcmtzTW9kZSkgewogICAgICAgICAgICAgICAgIGNhc2UgTWFya3NOb3RTdGFsZToK
LSAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dl
ZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RI
YXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwgU3dl
ZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RI
YXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGUsIGRlc3Ryb3lGdW5jKTsKKyAgICAgICAg
ICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVM
aXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlB
bGxvY2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVM
aXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlB
bGxvY2F0ZWQsIE1hcmtzTm90U3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lGdW5jKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXJr
c1N0YWxlOgotICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIE5vdEVt
cHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwg
RG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIE5vdEVtcHR5
LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9l
c05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZSwgZGVzdHJveUZ1bmMpOworICAgICAg
ICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcFRvRnJl
ZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxp
c3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFs
bG9jYXRlZCwgTWFya3NTdGFsZSwgaGFzRGVzdHJ1Y3RvciwgZGVzdHJveUZ1bmMpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CkBAIC00MzEsNyArNDQwLDEzIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmluaXNo
U3dlZXBLbm8KICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFRoZSB0ZW1wbGF0ZSBhcmd1
bWVudHMgZG9uJ3QgbWF0dGVyIGJlY2F1c2UgdGhlIGZpcnN0IG9uZSBpcyBmYWxzZS4KLSAgICBz
cGVjaWFsaXplZFN3ZWVwPGZhbHNlLCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzTm9EZXN0
cnVjdG9ycywgRG9udFNjcmliYmxlLCBIYXNOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJl
ZUxpc3QsIGVtcHR5TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9k
ZSwgbmV3bHlBbGxvY2F0ZWRNb2RlLCBtYXJrc01vZGUsIGRlc3Ryb3lGdW5jKTsKKyAgICBzcGVj
aWFsaXplZFN3ZWVwPGZhbHNlLCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzTm9EZXN0cnVj
dG9ycywgRG9udFNjcmliYmxlLCBIYXNOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxp
c3QsIGVtcHR5TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwg
bmV3bHlBbGxvY2F0ZWRNb2RlLCBtYXJrc01vZGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lGdW5j
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVzdHJveUZ1bmM+Cit2b2lkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShGcmVlTGlzdCogZnJlZUxp
c3QsIGNvbnN0IERlc3Ryb3lGdW5jJiBkZXN0cm95RnVuYykKK3sKKyAgICBmaW5pc2hTd2VlcEtu
b3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIEhhc05vRGVzdHJ1Y3RvcigpLCBkZXN0cm95RnVu
Yyk7CiB9CiAKIGlubGluZSBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcERlc3RydWN0aW9uTW9k
ZSBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcERlc3RydWN0aW9uTW9kZSgpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCShyZXZpc2lvbiAyMzIxNjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0Miw3ICsxNDIsNyBAQCB2b2lkIFN1YnNwYWNlOjpkaWRSZW1vdmVCbG9jayhzaXplX3QpCiB7
CiB9CiAKLXZvaWQgU3Vic3BhY2U6OmRpZEJlZ2luU3dlZXBpbmdUb0ZyZWVMaXN0KE1hcmtlZEJs
b2NrOjpIYW5kbGUqKQordm9pZCBTdWJzcGFjZTo6ZGlkU3dlZXBUb0ZyZWVMaXN0KE1hcmtlZEJs
b2NrOjpIYW5kbGUqKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dWJzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNw
YWNlLmgJKHJldmlzaW9uIDIzMjE2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1
YnNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVCaXRzKHNpemVfdCBuZXdTaXplKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVtb3ZlQmxvY2soc2l6ZV90IGJsb2NrSW5kZXgpOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRCZWdpblN3ZWVwaW5nVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFN3ZWVwVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKik7
IC8vIFRoaXMgaXMgdGhlIGxhc3QgdGhpbmcgdGhhdCBzd2VlcCBkb2VzLgogCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBpbml0aWFsaXplKEhlYXBDZWxsVHlwZSosIEFsaWduZWRNZW1vcnlBbGxvY2F0
b3IqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmgJKHJldmlzaW9uIDIzMjE2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIEFMV0FZ
U19JTkxJTkUgdm9pZCogdHJ5QWxsb2NhdGVDZWxsSGVscGUKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLXZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiBoZWFwLCBzaXplX3Qgc2l6ZSkKK0FMV0FZ
U19JTkxJTkUgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXAsIHNpemVfdCBzaXplKQogewog
ICAgIHJldHVybiB0cnlBbGxvY2F0ZUNlbGxIZWxwZXI8VD4oaGVhcCwgc2l6ZSwgbnVsbHB0ciwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUm9w
ZVN0cmluZ0hlYXBDZWxsVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdIZWFwQ2VsbFR5cGUuaCIKKworI2luY2x1ZGUg
Ik1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEpTUm9wZVN0cmluZ0hhc0Rlc3RydWN0b3JGdW5jIHsKK3B1Ymxp
YzoKKyAgICBKU1JvcGVTdHJpbmdIYXNEZXN0cnVjdG9yRnVuYyhCaXRtYXA8TWFya2VkQmxvY2s6
OmF0b21zUGVyQmxvY2s+KiBiaXRzKQorICAgICAgICA6IG1fYml0cyhiaXRzKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yKCkoc2l6ZV90IGkpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9iaXRzLT5nZXQoaSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIG1fYml0czsKK307
CisKK3N0cnVjdCBKU1JvcGVTdHJpbmdEZXN0cm95RnVuYyB7CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIG9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwpIGNvbnN0CisgICAgeworICAgICAgICBz
dGF0aWNfY2FzdDxKU1JvcGVTdHJpbmcqPihjZWxsKS0+SlNSb3BlU3RyaW5nOjp+SlNSb3BlU3Ry
aW5nKCk7CisgICAgfQorfTsKKworSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlOjpKU1JvcGVTdHJp
bmdIZWFwQ2VsbFR5cGUoKQorICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKE5lZWRz
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQoreworfQorCitKU1JvcGVTdHJpbmdIZWFw
Q2VsbFR5cGU6On5KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUoKQoreworfQorCit2b2lkIEpTUm9w
ZVN0cmluZ0hlYXBDZWxsVHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFu
ZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpCit7CisgICAgVk0mIHZtID0gKmhhbmRsZS52bSgpOwor
ICAgIAorICAgIGlmICh2bS5yb3BlU3RyaW5nc1dpdGhEZXN0cnVjdG9ycy5jb250YWlucygmaGFu
ZGxlKSkgeworICAgICAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKAor
ICAgICAgICAgICAgZnJlZUxpc3QsCisgICAgICAgICAgICBKU1JvcGVTdHJpbmdIYXNEZXN0cnVj
dG9yRnVuYyh2bS5yb3BlU3RyaW5nc1dpdGhEZXN0cnVjdG9ycy5iaXRzKCZoYW5kbGUpKSwKKyAg
ICAgICAgICAgIEpTU3RyaW5nRGVzdHJveUZ1bmMoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlz
dCwgSlNTdHJpbmdEZXN0cm95RnVuYygpKTsKK30KKwordm9pZCBKU1JvcGVTdHJpbmdIZWFwQ2Vs
bFR5cGU6OmRlc3Ryb3koVk0mIHZtLCBKU0NlbGwqIGNlbGwpCit7CisgICAgSlNSb3BlU3RyaW5n
RGVzdHJveUZ1bmMoKSh2bSwgY2VsbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JvcGVTdHJp
bmdIZWFwQ2VsbFR5cGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSGVhcENlbGxUeXBlLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUgOiBwdWJsaWMgSGVhcENlbGxU
eXBlIHsKK3B1YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1JvcGVTdHJpbmdIZWFwQ2Vs
bFR5cGUoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5KU1JvcGVTdHJpbmdIZWFw
Q2VsbFR5cGUoKTsKKyAgICAKKyAgICB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5k
bGUmLCBGcmVlTGlzdCopIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCop
IG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHJldmlzaW9uIDIzMjE2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgxLDYgKzE4MSw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVRvQXRvbWlj
U3QKICAgICBpZiAobGVuZ3RoKCkgPiBtYXhMZW5ndGhGb3JPblN0YWNrUmVzb2x2ZSkgewogICAg
ICAgICByZXNvbHZlUm9wZShleGVjKTsKICAgICAgICAgbV92YWx1ZSA9IEF0b21pY1N0cmluZyht
X3ZhbHVlKTsKKyAgICAgICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxlKGV4ZWMtPnZtKCkpOwogICAg
ICAgICBzZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJpdCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTE4OSwxMSArMTkwLDEzIEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZl
Um9wZVRvQXRvbWljU3QKICAgICAgICAgTENoYXIgYnVmZmVyW21heExlbmd0aEZvck9uU3RhY2tS
ZXNvbHZlXTsKICAgICAgICAgcmVzb2x2ZVJvcGVJbnRlcm5hbDgoYnVmZmVyKTsKICAgICAgICAg
bV92YWx1ZSA9IEF0b21pY1N0cmluZyhidWZmZXIsIGxlbmd0aCgpKTsKKyAgICAgICAgZGlkQmVj
b21lRGVzdHJ1Y3RpYmxlKGV4ZWMtPnZtKCkpOwogICAgICAgICBzZXRJczhCaXQobV92YWx1ZS5p
bXBsKCktPmlzOEJpdCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBVQ2hhciBidWZmZXJbbWF4
TGVuZ3RoRm9yT25TdGFja1Jlc29sdmVdOwogICAgICAgICByZXNvbHZlUm9wZUludGVybmFsMTYo
YnVmZmVyKTsKICAgICAgICAgbV92YWx1ZSA9IEF0b21pY1N0cmluZyhidWZmZXIsIGxlbmd0aCgp
KTsKKyAgICAgICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxlKGV4ZWMtPnZtKCkpOwogICAgICAgICBz
ZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJpdCgpKTsKICAgICB9CiAKQEAgLTIxNiw2ICsy
MTksNyBAQCBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gSlNSb3BlU3RyaW5nOjpyCiAgICAgICAg
IHJlc29sdmVSb3BlKGV4ZWMpOwogICAgICAgICBpZiAoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+
IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwKG1fdmFsdWUu
aW1wbCgpKSkgewogICAgICAgICAgICAgbV92YWx1ZSA9ICpleGlzdGluZ0F0b21pY1N0cmluZzsK
KyAgICAgICAgICAgIGRpZEJlY29tZURlc3RydWN0aWJsZShleGVjLT52bSgpKTsKICAgICAgICAg
ICAgIHNldElzOEJpdChtX3ZhbHVlLmltcGwoKS0+aXM4Qml0KCkpOwogICAgICAgICAgICAgY2xl
YXJGaWJlcnMoKTsKICAgICAgICAgICAgIHJldHVybiBleGlzdGluZ0F0b21pY1N0cmluZzsKQEAg
LTIyOCw2ICsyMzIsNyBAQCBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gSlNSb3BlU3RyaW5nOjpy
CiAgICAgICAgIHJlc29sdmVSb3BlSW50ZXJuYWw4KGJ1ZmZlcik7CiAgICAgICAgIGlmIChSZWZQ
dHI8QXRvbWljU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9taWNTdHJpbmcgPSBBdG9taWNTdHJpbmdJ
bXBsOjpsb29rVXAoYnVmZmVyLCBsZW5ndGgoKSkpIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSAq
ZXhpc3RpbmdBdG9taWNTdHJpbmc7CisgICAgICAgICAgICBkaWRCZWNvbWVEZXN0cnVjdGlibGUo
ZXhlYy0+dm0oKSk7CiAgICAgICAgICAgICBzZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJp
dCgpKTsKICAgICAgICAgICAgIGNsZWFyRmliZXJzKCk7CiAgICAgICAgICAgICByZXR1cm4gZXhp
c3RpbmdBdG9taWNTdHJpbmc7CkBAIC0yMzcsNiArMjQyLDcgQEAgUmVmUHRyPEF0b21pY1N0cmlu
Z0ltcGw+IEpTUm9wZVN0cmluZzo6cgogICAgICAgICByZXNvbHZlUm9wZUludGVybmFsMTYoYnVm
ZmVyKTsKICAgICAgICAgaWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlzdGluZ0F0b21p
Y1N0cmluZyA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChidWZmZXIsIGxlbmd0aCgpKSkgewog
ICAgICAgICAgICAgbV92YWx1ZSA9ICpleGlzdGluZ0F0b21pY1N0cmluZzsKKyAgICAgICAgICAg
IGRpZEJlY29tZURlc3RydWN0aWJsZShleGVjLT52bSgpKTsKICAgICAgICAgICAgIHNldElzOEJp
dChtX3ZhbHVlLmltcGwoKS0+aXM4Qml0KCkpOwogICAgICAgICAgICAgY2xlYXJGaWJlcnMoKTsK
ICAgICAgICAgICAgIHJldHVybiBleGlzdGluZ0F0b21pY1N0cmluZzsKQEAgLTI1Myw2ICsyNTks
NyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGUoRXhlY1N0YXRlCiAgICAgaWYgKGlz
U3Vic3RyaW5nKCkpIHsKICAgICAgICAgQVNTRVJUKCFzdWJzdHJpbmdCYXNlKCktPmlzUm9wZSgp
KTsKICAgICAgICAgbV92YWx1ZSA9IHN1YnN0cmluZ0Jhc2UoKS0+bV92YWx1ZS5zdWJzdHJpbmdT
aGFyaW5nSW1wbChzdWJzdHJpbmdPZmZzZXQoKSwgbGVuZ3RoKCkpOworICAgICAgICBkaWRCZWNv
bWVEZXN0cnVjdGlibGUoZXhlYy0+dm0oKSk7CiAgICAgICAgIHN1YnN0cmluZ0Jhc2UoKS5jbGVh
cigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjYyLDYgKzI2OSw3IEBAIHZvaWQgSlNS
b3BlU3RyaW5nOjpyZXNvbHZlUm9wZShFeGVjU3RhdGUKICAgICAgICAgaWYgKGF1dG8gbmV3SW1w
bCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCksIGJ1ZmZlcikp
IHsKICAgICAgICAgICAgIEhlYXA6OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKG5ld0ltcGwtPmNvc3QoKSk7CiAgICAgICAgICAgICBtX3ZhbHVlID0gV1RGTW92ZShuZXdJ
bXBsKTsKKyAgICAgICAgICAgIGRpZEJlY29tZURlc3RydWN0aWJsZShleGVjLT52bSgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG91dE9mTWVtb3J5KGV4ZWMpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMjc2LDYgKzI4NCw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZl
Um9wZShFeGVjU3RhdGUKICAgICBpZiAoYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChsZW5ndGgoKSwgYnVmZmVyKSkgewogICAgICAgICBIZWFwOjpoZWFw
KHRoaXMpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChuZXdJbXBsLT5jb3N0KCkpOwogICAg
ICAgICBtX3ZhbHVlID0gV1RGTW92ZShuZXdJbXBsKTsKKyAgICAgICAgZGlkQmVjb21lRGVzdHJ1
Y3RpYmxlKGV4ZWMtPnZtKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG91dE9mTWVtb3J5KGV4
ZWMpOwogICAgICAgICByZXR1cm47CkBAIC0zNzYsNiArMzg1LDExIEBAIHZvaWQgSlNSb3BlU3Ry
aW5nOjpyZXNvbHZlUm9wZVNsb3dDYXNlKFUKICAgICBBU1NFUlQoYnVmZmVyID09IHBvc2l0aW9u
KTsKIH0KIAordm9pZCBKU1JvcGVTdHJpbmc6OmRpZEJlY29tZURlc3RydWN0aWJsZShWTSYgdm0p
Cit7CisgICAgdm0ucm9wZVN0cmluZ3NXaXRoRGVzdHJ1Y3RvcnMuYWRkKHRoaXMpOworfQorCiB2
b2lkIEpTUm9wZVN0cmluZzo6b3V0T2ZNZW1vcnkoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDIzMjE2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEwICs4Nyw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIAotICAgIC8vIFdlIHNwZWNpYWxp
emUgdGhlIHN0cmluZyBzdWJzcGFjZSB0byBnZXQgdGhlIGZhc3Rlc3QgcG9zc2libGUgc3dlZXAu
IFRoaXMgd291bGRuJ3QgYmUKLSAgICAvLyBuZWNlc3NhcnkgaWYgSlNTdHJpbmcgZGlkbid0IGhh
dmUgYSBkZXN0cnVjdG9yLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lPgotICAgIHN0YXRpYyBDb21w
bGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICByZXR1cm4gJnZtLnN0cmluZ1Nw
YWNlOwogICAgIH0KQEAgLTI0MCw2ICsyMzgsMTIgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFs
IDogcHVibGljIEpTU3RyaQogICAgIGZyaWVuZCBKU1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRl
cihWTSopOwogCiBwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+CisgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZt
LnJvcGVTdHJpbmdTcGFjZTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIE92ZXJm
bG93SGFuZGxlciA9IENyYXNoT25PdmVyZmxvdz4KICAgICBjbGFzcyBSb3BlQnVpbGRlciA6IHB1
YmxpYyBPdmVyZmxvd0hhbmRsZXIgewogICAgIHB1YmxpYzoKQEAgLTI5MiwyOCArMjk2LDI4IEBA
IHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKICAgICB7CiAg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKCFzdW1PdmVy
Zmxvd3M8aW50MzJfdD4oczEtPmxlbmd0aCgpLCBzMi0+bGVuZ3RoKCkpKTsKICAgICAgICAgc2V0
TGVuZ3RoKHMxLT5sZW5ndGgoKSArIHMyLT5sZW5ndGgoKSk7CiAgICAgICAgIHNldElzOEJpdChz
MS0+aXM4Qml0KCkgJiYgczItPmlzOEJpdCgpKTsKICAgICAgICAgc2V0SXNTdWJzdHJpbmcoZmFs
c2UpOwotICAgICAgICBmaWJlcigwKS5zZXQodm0sIHRoaXMsIHMxKTsKLSAgICAgICAgZmliZXIo
MSkuc2V0KHZtLCB0aGlzLCBzMik7CisgICAgICAgIGZpYmVyKDApLnNldFdpdGhvdXRXcml0ZUJh
cnJpZXIoczEpOworICAgICAgICBmaWJlcigxKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHMyKTsK
ICAgICAgICAgZmliZXIoMikuY2xlYXIoKTsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1N0cmluZyogczEs
IEpTU3RyaW5nKiBzMiwgSlNTdHJpbmcqIHMzKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQoIXN1bU92ZXJmbG93czxpbnQzMl90PihzMS0+
bGVuZ3RoKCksIHMyLT5sZW5ndGgoKSwgczMtPmxlbmd0aCgpKSk7CiAgICAgICAgIHNldExlbmd0
aChzMS0+bGVuZ3RoKCkgKyBzMi0+bGVuZ3RoKCkgKyBzMy0+bGVuZ3RoKCkpOwogICAgICAgICBz
ZXRJczhCaXQoczEtPmlzOEJpdCgpICYmIHMyLT5pczhCaXQoKSAmJiAgczMtPmlzOEJpdCgpKTsK
ICAgICAgICAgc2V0SXNTdWJzdHJpbmcoZmFsc2UpOwotICAgICAgICBmaWJlcigwKS5zZXQodm0s
IHRoaXMsIHMxKTsKLSAgICAgICAgZmliZXIoMSkuc2V0KHZtLCB0aGlzLCBzMik7Ci0gICAgICAg
IGZpYmVyKDIpLnNldCh2bSwgdGhpcywgczMpOworICAgICAgICBmaWJlcigwKS5zZXRXaXRob3V0
V3JpdGVCYXJyaWVyKHMxKTsKKyAgICAgICAgZmliZXIoMSkuc2V0V2l0aG91dFdyaXRlQmFycmll
cihzMik7CisgICAgICAgIGZpYmVyKDIpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoczMpOwogICAg
IH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
U3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTQwMiwx
MyArNDA2LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19tYXhJbnRl
cm5hbFJvcGVMZW5ndGggPSAzOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBKU1N0cmluZyogY3Jl
YXRlKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIpCisgICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcq
IHMyKQogICAgIHsKICAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmcodm0p
OwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtLCBzMSwgczIpOwogICAgICAg
ICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KLSAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShW
TSYgdm0sIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyLCBKU1N0cmluZyogczMpCisgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIEpTU3RyaW5nKiBzMSwg
SlNTdHJpbmcqIHMyLCBKU1N0cmluZyogczMpCiAgICAgewogICAgICAgICBKU1JvcGVTdHJpbmcq
IG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0u
aGVhcCkpIEpTUm9wZVN0cmluZyh2bSk7CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRp
b24odm0sIHMxLCBzMiwgczMpOwpAQCAtNDMxLDcgKzQzNSw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGVhckZpYmVycygpIGNvbnN0OwogICAgIFN0cmluZ1ZpZXcgdW5zYWZlVmlldyhFeGVjU3Rh
dGUqKSBjb25zdDsKICAgICBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgdmlld1dpdGhV
bmRlcmx5aW5nU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwotCisgICAgCisgICAgdm9pZCBkaWRC
ZWNvbWVEZXN0cnVjdGlibGUoVk0mKTsKKyAgICAKICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTU3Ry
aW5nPiYgZmliZXIodW5zaWduZWQgaSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNT
dWJzdHJpbmcoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZp
c2lvbiAyMzIxNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaCIKKyNpbmNsdWRlICJKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuaCIKICNp
bmNsdWRlICJKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVk
ZSAiSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIu
aCIKQEAgLTI1Miw2ICsyNTMsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAgICAgLCBjZWxsRGFuZ2Vyb3VzQml0c0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5p
cXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkpTQ2VsbCkpKQogICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShz
dGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVj
dGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQogICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKHN0ZDo6
bWFrZV91bmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCByb3BlU3RyaW5nSGVh
cENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlPigpKQog
ICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCiAgICAgLCBzZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3RIZWFwQ2VsbFR5cGU+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAtMjYzLDcg
KzI2NSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAs
IGNlbGxEYW5nZXJvdXNCaXRzU3BhY2UoIkpTQ2VsbCBEYW5nZXJvdXNCaXRzIiwgaGVhcCwgY2Vs
bERhbmdlcm91c0JpdHNIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0
KCkpCiAgICAgLCBqc1ZhbHVlR2lnYWNhZ2VDZWxsU3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgSlND
ZWxsIiwgaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdh
Y2FnZUFsbG9jYXRvci5nZXQoKSkKICAgICAsIGRlc3RydWN0aWJsZUNlbGxTcGFjZSgiRGVzdHJ1
Y3RpYmxlIEpTQ2VsbCIsIGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCi0gICAgLCBzdHJpbmdTcGFjZSgiSlNTdHJpbmci
LCBoZWFwLCBzdHJpbmdIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0
KCkpCiAgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3Qi
LCBoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NB
bGxvY2F0b3IuZ2V0KCkpCiAgICAgLCBlYWdlcmx5U3dlcHREZXN0cnVjdGlibGVPYmplY3RTcGFj
ZSgiRWFnZXJseSBTd2VwdCBKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAsIGRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKICAg
ICAsIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2UoIkpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3RTcGFjZSIsIGhlYXAsIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQpAQCAtMzAwLDcgKzMwMSw5IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHByb3BlcnR5VGFibGVTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBQcm9wZXJ0eVRhYmxlKQogICAgICwgcHJveHlSZXZva2VTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3h5UmV2
b2tlKQogICAgICwgcmVnRXhwQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cENvbnN0cnVjdG9y
KQorICAgICwgcm9wZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIHJvcGVTdHJp
bmdIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUm9wZVN0cmluZykKICAgICAsIHN0cmljdE1vZGVUeXBl
RXJyb3JGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKQorICAg
ICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgc3RyaW5nSGVhcENlbGxUeXBl
LmdldCgpLCBKU1N0cmluZykKICAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0
dXJlUmFyZURhdGEpCiAgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUpCiAgICAgLCB3
ZWFrU2V0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpCkBAIC0zMTQsNiArMzE3LDcgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCiAg
ICAgLCBpbmZlcnJlZFR5cGVzV2l0aEZpbmFsaXplcnMoaW5mZXJyZWRUeXBlU3BhY2UpCiAgICAg
LCBpbmZlcnJlZFZhbHVlc1dpdGhGaW5hbGl6ZXJzKGluZmVycmVkVmFsdWVTcGFjZSkKKyAgICAs
IHJvcGVTdHJpbmdzV2l0aERlc3RydWN0b3JzKHJvcGVTdHJpbmdTcGFjZSkKICAgICAsIGV2YWxD
b2RlQmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBFdmFsQ29kZUJsb2NrKQogICAgICwgZnVuY3Rpb25Db2RlQmxvY2tT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBGdW5jdGlvbkNvZGVCbG9jaykKICAgICAsIG1vZHVsZVByb2dyYW1Db2RlQmxvY2tT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCShyZXZpc2lvbiAyMzIxNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDksNiArMzA5LDcgQEAgcHVibGljOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGNlbGxEYW5nZXJvdXNCaXRzSGVhcENlbGxU
eXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTU3RyaW5nSGVhcENlbGxUeXBlPiBz
dHJpbmdIZWFwQ2VsbFR5cGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEpTUm9wZVN0cmluZ0hlYXBD
ZWxsVHlwZT4gcm9wZVN0cmluZ0hlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBD
ZWxsVHlwZT4gc2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGU7CiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQpAQCAtMzQxLDcgKzM0Miw2IEBAIHB1YmxpYzoKICAgICBDb21wbGV0ZVN1
YnNwYWNlIGNlbGxEYW5nZXJvdXNCaXRzU3BhY2U7CiAgICAgQ29tcGxldGVTdWJzcGFjZSBqc1Zh
bHVlR2lnYWNhZ2VDZWxsU3BhY2U7IC8vIEZJWE1FOiBUaGlzIHNwYWNlIGlzIHByb2JsZW1hdGlj
IGJlY2F1c2Ugd2UgaGF2ZSB0aGluZ3MgaW4gaGVyZSBsaWtlIERpcmVjdEFyZ3VtZW50cyBhbmQg
U2NvcGVkQXJndW1lbnRzOyB0aG9zZSBzaG91bGQgYmUgc3BsaXQgaW50byBKU1ZhbHVlT09CIGNl
bGxzIGFuZCBKU1ZhbHVlU3RyaWN0IGF1eGlsaWFyaWVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODU4CiAgICAgQ29tcGxldGVTdWJzcGFjZSBkZXN0cnVjdGli
bGVDZWxsU3BhY2U7Ci0gICAgQ29tcGxldGVTdWJzcGFjZSBzdHJpbmdTcGFjZTsKICAgICBDb21w
bGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwogICAgIENvbXBsZXRlU3Vic3Bh
Y2UgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CiAgICAgQ29tcGxldGVTdWJz
cGFjZSBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlOwpAQCAtMzc5LDcgKzM3OSw5IEBAIHB1
YmxpYzoKICAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CiAgICAgSXNvU3Vic3Bh
Y2UgcHJveHlSZXZva2VTcGFjZTsKICAgICBJc29TdWJzcGFjZSByZWdFeHBDb25zdHJ1Y3RvclNw
YWNlOworICAgIElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFjZTsKICAgICBJc29TdWJzcGFjZSBz
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJpbmdT
cGFjZTsKICAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOwogICAgIElzb1N1
YnNwYWNlIHN0cnVjdHVyZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHdlYWtTZXRTcGFjZTsKQEAg
LTM5NCw2ICszOTYsNyBAQCBwdWJsaWM6CiAgICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOwogICAgIElzb0NlbGxTZXQgaW5mZXJyZWRUeXBlc1dp
dGhGaW5hbGl6ZXJzOwogICAgIElzb0NlbGxTZXQgaW5mZXJyZWRWYWx1ZXNXaXRoRmluYWxpemVy
czsKKyAgICBJc29DZWxsU2V0IHJvcGVTdHJpbmdzV2l0aERlc3RydWN0b3JzOwogICAgIAogICAg
IHN0cnVjdCBTcGFjZUFuZEZpbmFsaXplclNldCB7CiAgICAgICAgIElzb1N1YnNwYWNlIHNwYWNl
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341338</attachid>
            <date>2018-05-25 15:27:45 -0700</date>
            <delta_ts>2018-05-25 17:09:45 -0700</delta_ts>
            <desc>maybe it&apos;ll work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>54939</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDE4LTA1LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Um9wZSBzdHJpbmcgc3dlZXBpbmcgc2hvdWxkIGF2b2lkIHRvdWNoaW5nIHVucmVzb2x2ZWQgcm9w
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTk2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVzcGVj
aWFsbHkgd2hlbiByb3BlcyBhcmUgYmVpbmcgdXNlZCBpbiBhbmdlciwgYSBsb3Qgb2YgSlNSb3Bl
U3RyaW5nIG9iamVjdHMgYXJlIG5ldmVyIHJlc29sdmVkLgorICAgICAgICBUaHVzIHRoZXkgZG9u
J3QgbmVlZCBkZXN0cnVjdGlvbi4gIFNpbmNlIGRlc3RydWN0aW9uIGlzIGV4cGVuc2l2ZSwgdGhh
dCB3b3VsZCBiZSB1c2VmdWwgdG8ga25vdy4KKyAgICAgICAgCisgICAgICAgIFJvcGVzIGFyZSB1
c3VhbGx5IHVucmVzb2x2ZWQgYmVjYXVzZSBwZW9wbGUgZG8gc29tZXRoaW5nIGxpa2UgdGhpczoK
KyAgICAgICAgCisgICAgICAgIHZhciByZXN1bHQgPSAiIjsKKyAgICAgICAgZm9yICh0aGluZ3Mp
CisgICAgICAgICAgICByZXN1bHQgKz0gc3R1ZmYKKyAgICAgICAgdXNlIHJlc3VsdAorICAgICAg
ICAKKyAgICAgICAgSW4gdGhhdCBjYXNlLCB3ZSB3aWxsIGNyZWF0ZSBhIEpTUm9wZVN0cmluZyBm
b3IgZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AsIGJ1dCB3ZSB3aWxsIG9ubHkKKyAgICAgICAg
cmVzb2x2ZSB0aGUgbGFzdCBvbmUuICBUaGlzIGNvbWVzIHVwIG92ZXIgYW5kIG92ZXIgYWdhaW4u
ICBGb3IgZXhhbXBsZSwgdGhpczoKKyAgICAgICAgCisgICAgICAgICJmb28iICsgYmFyICsgImJh
eiIgKyBmdXp6ICsgImJ1enoiICsgdGhpbmd5ICsgInN0dWZmIgorICAgICAgICAKKyAgICAgICAg
d2lsbCBjcmVhdGUgdGhyZWUgSlNSb3BlU3RyaW5ncywgYnV0IG9ubHkgdGhlIGxhc3Qgb25lIHdp
bGwgZ2V0IHJlc29sdmVkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgdXNlcyBhbiBJ
c29DZWxsU2V0IHRvIHRyYWNrIHdoaWNoIEpTUm9wZVN0cmluZ3MgaGF2ZSBiZWVuIHJlc29sdmVk
LCBzbyB0aGF0IHdlIGNhbgorICAgICAgICBza2lwIGRlc3RydWN0aW5nIHRob3NlIHRoYXQgaGF2
ZW4ndCBiZWVuIHJlc29sdmVkLiBUbyBkbyB0aGF0LCB0aGlzIGNoYW5nZSBwdXRzIEpTU3RyaW5n
IGFuZAorICAgICAgICBKU1JvcGVTdHJpbmcgaW50byB0aGVpciBvd24gSXNvU3Vic3BhY2VzLgor
ICAgICAgICAKKyAgICAgICAgVGhpcyBhbHNvIHJlbW92ZXMgc29tZSB1bm5lY2Vzc2FyeSBiYXJy
aWVycyBpbiB0aGUgY29uc3RydWN0aW9uIG9mIEpTUm9wZVN0cmluZ3MuCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIGhlYXAvQXRvbUluZGljZXMuaDoKKyAgICAgICAgKEpTQzo6QXRv
bUluZGljZXM6OkF0b21JbmRpY2VzKToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQuaDoKKyAg
ICAgICAgKiBoZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Oklzb0NlbGxT
ZXQ6OmFkZCk6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnJlbW92ZSk6CisgICAgICAgIChK
U0M6Oklzb0NlbGxTZXQ6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SXNvQ2VsbFNl
dDo6Yml0cyBjb25zdCk6CisgICAgICAgICogaGVhcC9Jc29TdWJzcGFjZS5jcHA6CisgICAgICAg
IChKU0M6Oklzb1N1YnNwYWNlOjpkaWRTd2VlcFRvRnJlZUxpc3QpOgorICAgICAgICAoSlNDOjpJ
c29TdWJzcGFjZTo6ZGlkQmVnaW5Td2VlcGluZ1RvRnJlZUxpc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGhlYXAvSXNvU3Vic3BhY2UuaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXApOgorICAgICAgICAqIGhl
YXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFz
Tm9EZXN0cnVjdG9yOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFs
aXplZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZmluaXNoU3dl
ZXBLbm93aW5nSGVhcENlbGxUeXBlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3Vic3BhY2U6OmRpZFN3ZWVwVG9GcmVlTGlzdCk6CisgICAgICAgIChKU0M6
OlN1YnNwYWNlOjpkaWRCZWdpblN3ZWVwaW5nVG9GcmVlTGlzdCk6IERlbGV0ZWQuCisgICAgICAg
ICogaGVhcC9TdWJzcGFjZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNSb3BlU3Ry
aW5nSGVhcENlbGxUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZ0hh
c0Rlc3RydWN0b3JGdW5jOjpKU1JvcGVTdHJpbmdIYXNEZXN0cnVjdG9yRnVuYyk6CisgICAgICAg
IChKU0M6OkpTUm9wZVN0cmluZ0hhc0Rlc3RydWN0b3JGdW5jOjpvcGVyYXRvcigpIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nRGVzdHJveUZ1bmM6Om9wZXJhdG9yKCkgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGU6OkpTUm9wZVN0cmluZ0hl
YXBDZWxsVHlwZSk6CisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZTo6fkpT
Um9wZVN0cmluZ0hlYXBDZWxsVHlwZSk6CisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZ0hlYXBD
ZWxsVHlwZTo6ZmluaXNoU3dlZXApOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmdIZWFwQ2Vs
bFR5cGU6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNSb3BlU3RyaW5nSGVhcENlbGxU
eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlVG9BdG9taWNTdHJpbmcgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlVG9FeGlzdGluZ0F0b21pY1N0cmlu
ZyBjb25zdCk6CisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OmRpZEJlY29tZURlc3RydWN0aWJsZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmlu
Zzo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNS0yNSAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIGEgbWVtb3J5IHRlc3Qg
d2hlcmUgd2UgY2FuIHZhbGlkYXRlIEpTQ3MgbWluaSBtZW1vcnkgbW9kZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04MjcsNiArODI3LDcgQEAgcnVu
dGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNw
cAogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCiBydW50aW1lL0pTUHJveHku
Y3BwCitydW50aW1lL0pTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5jcHAKIHJ1bnRpbWUvSlNSdW5M
b29wVGltZXIuY3BwCiBydW50aW1lL0pTU2NvcGUuY3BwCiBydW50aW1lL0pTU2NyaXB0RmV0Y2hl
ci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzIyMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDYgKzM0OCw3IEBACiAJCTBGNUNGOTg5
MUU5RUQ2NTIwMEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUNGOTg3MUU5RUQ2NEUwMEMxODY5MiAv
KiBBaXJTdGFja0FsbG9jYXRpb24uaCAqLzsgfTsKIAkJMEY1RTBGRDgyMDdDNzI3MzAwOTdGMERF
IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAv
KiBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmggKi87IH07CiAJCTBGNUUwRkU3
MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyog
SXNvU3Vic3BhY2VQZXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNUU3OTBEMjBCOEMxOEIwMEI4MDlCOCAvKiBKU1JvcGVTdHJpbmdIZWFw
Q2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNUU3OTBCMjBCOEMxNDgwMEI4MDlCOCAvKiBKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuaCAq
LzsgfTsKIAkJMEY1RUY5MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3ODAw
M0U1QzI1IC8qIEpJVFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjYwRkU4RTFGRkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NjE4MzJBMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzIxMUM0NUJGMDcw
MDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLzsgfTsKQEAgLTIzNzUsNiArMjM3
Niw4IEBACiAJCTBGNUUwRkQ3MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0cmFjdEludGVycHJl
dGVyQ2xvYmJlclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJc29TdWJzcGFjZVBlclZNLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJc29T
dWJzcGFjZVBlclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElz
b1N1YnNwYWNlUGVyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFNzkw
QjIwQjhDMTQ4MDBCODA5QjggLyogSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFNzkwQzIwQjhDMTQ5MDBCODA5QjggLyogSlNS
b3BlU3RyaW5nSGVhcENlbGxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNUVGOTFCMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVGh1bmtzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5r
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRUaHVua3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MEZFOEQxRkZDMzZGQzAwMDMzMjBBIC8qIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NjQ1LDkgKzY2NDgsOSBAQAogCQkJCUUxNzg2MzNGMEQ5QkVDMDAwMEQ3NEU3
NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggKi8sCiAJCQkJRTM1RTAzNUQxQjdBQjQzRTAwNzNB
RDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8sCiAJCQkJRTM1RTAz
NUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICov
LAorCQkJCUE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLywKIAkJCQlB
N0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovLAogCQkJCUE3QThBRjJE
MTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8sCi0JCQkJQTdBOEFGMkIxN0FEQjVG
MzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovLAogCQkJCUJDOUJCOTVCMEUxOTY4MDYwMERGODg1
NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywKIAkJCQlCQzExNjY3QTBFMTk5QzA1MDA4MDY2
REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovLAogCQkJCUExQjlFMjMzMUI0RTBENjcwMEJDN0ZF
RCAvKiBJbnRsQ29sbGF0b3IuY3BwICovLApAQCAtNjc1Nyw5ICs2NzYwLDkgQEAKIAkJCQk3OUI4
MTk5MjFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9iYWxPYmplY3RJbmxpbmVzLmggKi8sCiAJCQkJ
NTNGMTFGNDIyMDkxNzQ5ODAwRTQxMUE3IC8qIEpTSW1tdXRhYmxlQnV0dGVyZmx5LmNwcCAqLywK
IAkJCQk1M0YxMUY0MDIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCAq
LywKKwkJCQkwRjJCNjZDOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQ4QXJyYXkuaCAqLywKIAkJ
CQkwRjJCNjZDQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQxNkFycmF5LmggKi8sCiAJCQkJMEYy
QjY2Q0IxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MzJBcnJheS5oICovLAotCQkJCTBGMkI2NkM5
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDhBcnJheS5oICovLAogCQkJCUUzM0Y1MDdFMUI4NDI5
QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5jcHAgKi8sCiAJCQkJRTMzRjUwN0YxQjg0
MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggKi8sCiAJCQkJRTMzRjUwNzYxQjg0
MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwICovLApAQCAt
NjgwNSw2ICs2ODA4LDggQEAKIAkJCQkyQTA1QUJENDE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmggKi8sCiAJCQkJODYyNTUzQ0UxNjEzNkFBNTAwOUYxN0QwIC8q
IEpTUHJveHkuY3BwICovLAogCQkJCTg2MjU1M0NGMTYxMzZBQTUwMDlGMTdEMCAvKiBKU1Byb3h5
LmggKi8sCisJCQkJMEY1RTc5MEMyMEI4QzE0OTAwQjgwOUI4IC8qIEpTUm9wZVN0cmluZ0hlYXBD
ZWxsVHlwZS5jcHAgKi8sCisJCQkJMEY1RTc5MEIyMEI4QzE0ODAwQjgwOUI4IC8qIEpTUm9wZVN0
cmluZ0hlYXBDZWxsVHlwZS5oICovLAogCQkJCTUzNDYzODcyMUU3MEQwMTUwMEYxMkFDMSAvKiBK
U1J1bkxvb3BUaW1lci5jcHAgKi8sCiAJCQkJNTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8qIEpT
UnVuTG9vcFRpbWVyLmggKi8sCiAJCQkJMTQ4NzRBRTExNUVCREU0QTAwMkUzNTg3IC8qIEpTU2Nv
cGUuY3BwICovLApAQCAtNjg0OCwxMCArNjg1MywxMCBAQAogCQkJCTUzRjI1NkUxMUI4N0UyODAw
MEI0Qjc2OCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCAqLywKIAkJCQk1MzkxN0U3
QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovLAogCQkJ
CTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggKi8sCi0JCQkJMEYyQjY2
RDQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDE2QXJyYXkuaCAqLywKLQkJCQkwRjJCNjZENTE3
QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MzJBcnJheS5oICovLAogCQkJCTBGMkI2NkQyMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1VpbnQ4QXJyYXkuaCAqLywKIAkJCQkwRjJCNjZEMzE3QjZCNUFCMDBB
N0FFM0YgLyogSlNVaW50OENsYW1wZWRBcnJheS5oICovLAorCQkJCTBGMkI2NkQ0MTdCNkI1QUIw
MEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggKi8sCisJCQkJMEYyQjY2RDUxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTVWludDMyQXJyYXkuaCAqLywKIAkJCQlBN0NBM0FFMTE3REE0MUFFMDA2NTM4QUYg
LyogSlNXZWFrTWFwLmNwcCAqLywKIAkJCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNX
ZWFrTWFwLmggKi8sCiAJCQkJNzA5RkI4NjExQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5j
cHAgKi8sCkBAIC03MDYwLDExICs3MDY1LDExIEBACiAJCQkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0
QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oICovLAogCQkJCTBGMkQ0REUzMTk4MzJEOTEwMDdENEIx
OSAvKiBUeXBlU2V0LmNwcCAqLywKIAkJCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyogVHlw
ZVNldC5oICovLAorCQkJCUE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5Lmgg
Ki8sCisJCQkJQTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5Lmgg
Ki8sCiAJCQkJQTdBOEFGMzIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggKi8sCiAJ
CQkJODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovLAog
CQkJCUE3QThBRjMzMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5oICovLAotCQkJCUE3
QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggKi8sCi0JCQkJQTdBOEFGMzEx
N0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi8sCiAJCQkJMEZFMDUwMjMx
QUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgKi8sCiAJCQkJMEZFMDUwMjQxQUE5MDk1
NjAwRDMzQjMzIC8qIFZhck9mZnNldC5oICovLAogCQkJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIz
NCAvKiBWTS5jcHAgKi8sCkBAIC04NzA4LDYgKzg3MTMsNyBAQAogCQkJCTBGRDhBMzJBMTdENTFG
NTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZEOEEzMkMxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NS
RW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RTcyMTFFMTkzQjlDNTkwMDMxRjZFRCAvKiBERkdUcmFuc2l0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjVFNzkwRDIwQjhDMThCMDBCODA5QjggLyogSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1RjE5MDA2QTU5N0MgLyogREZHVHlw
ZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRTBGNzcxNkMxREIx
MjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MzRCMTRBMTZENDIwMTMwMDFDREE1QSAvKiBERkdVc2VLaW5kLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0F0b21JbmRpY2VzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQXRvbUluZGljZXMuaAkocmV2aXNpb24gMjMy
MjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQXRvbUluZGljZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBBdG9tSW5k
aWNlcyB7CiAgICAgQXRvbUluZGljZXMoKSB7IH0KICAgICAKLSAgICBBdG9tSW5kaWNlcyhIZWFw
Q2VsbCogY2VsbCkKKyAgICBBdG9tSW5kaWNlcyhjb25zdCBIZWFwQ2VsbCogY2VsbCkKICAgICAg
ICAgOiBibG9jayhNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCkpCiAgICAgICAgICwgYmxvY2tJ
bmRleChibG9jay0+aGFuZGxlKCkuaW5kZXgoKSkKICAgICAgICAgLCBhdG9tTnVtYmVyKGJsb2Nr
LT5hdG9tTnVtYmVyKGNlbGwpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
Q2VsbFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXQuaAkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsMTQgQEAgcHVibGljOgog
ICAgIElzb0NlbGxTZXQoSXNvU3Vic3BhY2UmIHN1YnNwYWNlKTsKICAgICB+SXNvQ2VsbFNldCgp
OwogICAgIAotICAgIGJvb2wgYWRkKEhlYXBDZWxsKiBjZWxsKTsgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBjZWxsIHdhcyBuZXdseSBhZGRlZC4KKyAgICBib29sIGFkZChjb25zdCBIZWFwQ2VsbCop
OyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNlbGwgd2FzIG5ld2x5IGFkZGVkLgogICAgIAotICAg
IGJvb2wgcmVtb3ZlKEhlYXBDZWxsKiBjZWxsKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjZWxs
IHdhcyBwcmV2aW91c2x5IHByZXNlbnQgYW5kIGdvdCByZW1vdmVkLgorICAgIGJvb2wgcmVtb3Zl
KGNvbnN0IEhlYXBDZWxsKik7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2VsbCB3YXMgcHJldmlv
dXNseSBwcmVzZW50IGFuZCBnb3QgcmVtb3ZlZC4KICAgICAKLSAgICBib29sIGNvbnRhaW5zKEhl
YXBDZWxsKiBjZWxsKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IEhlYXBDZWxsKikg
Y29uc3Q7CisgICAgCisgICAgYm9vbCBjb250YWlucyhNYXJrZWRCbG9jazo6SGFuZGxlKikgY29u
c3Q7CisgICAgQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPiogYml0cyhNYXJrZWRC
bG9jazo6SGFuZGxlKikgY29uc3Q7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRy
PFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJr
ZWRCbG9ja1NvdXJjZSgpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgYm9vbCBJc29DZWxsU2V0
OjphZGQoSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9vbCBJc29DZWxsU2V0OjphZGQoY29uc3Qg
SGVhcENlbGwqIGNlbGwpCiB7CiAgICAgQXRvbUluZGljZXMgYXRvbUluZGljZXMoY2VsbCk7CiAg
ICAgYXV0byYgYml0c1B0clJlZiA9IG1fYml0c1thdG9tSW5kaWNlcy5ibG9ja0luZGV4XTsKQEAg
LTQxLDcgKzQxLDcgQEAgaW5saW5lIGJvb2wgSXNvQ2VsbFNldDo6YWRkKEhlYXBDZWxsKiBjZQog
ICAgIHJldHVybiAhYml0cy0+Y29uY3VycmVudFRlc3RBbmRTZXQoYXRvbUluZGljZXMuYXRvbU51
bWJlcik7CiB9CiAKLWlubGluZSBib29sIElzb0NlbGxTZXQ6OnJlbW92ZShIZWFwQ2VsbCogY2Vs
bCkKK2lubGluZSBib29sIElzb0NlbGxTZXQ6OnJlbW92ZShjb25zdCBIZWFwQ2VsbCogY2VsbCkK
IHsKICAgICBBdG9tSW5kaWNlcyBhdG9tSW5kaWNlcyhjZWxsKTsKICAgICBhdXRvJiBiaXRzUHRy
UmVmID0gbV9iaXRzW2F0b21JbmRpY2VzLmJsb2NrSW5kZXhdOwpAQCAtNTEsNyArNTEsNyBAQCBp
bmxpbmUgYm9vbCBJc29DZWxsU2V0OjpyZW1vdmUoSGVhcENlbGwqCiAgICAgcmV0dXJuIGJpdHMt
PmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoYXRvbUluZGljZXMuYXRvbU51bWJlcik7CiB9CiAKLWlu
bGluZSBib29sIElzb0NlbGxTZXQ6OmNvbnRhaW5zKEhlYXBDZWxsKiBjZWxsKSBjb25zdAoraW5s
aW5lIGJvb2wgSXNvQ2VsbFNldDo6Y29udGFpbnMoY29uc3QgSGVhcENlbGwqIGNlbGwpIGNvbnN0
CiB7CiAgICAgQXRvbUluZGljZXMgYXRvbUluZGljZXMoY2VsbCk7CiAgICAgYXV0byogYml0cyA9
IG1fYml0c1thdG9tSW5kaWNlcy5ibG9ja0luZGV4XS5nZXQoKTsKQEAgLTYwLDYgKzYwLDE2IEBA
IGlubGluZSBib29sIElzb0NlbGxTZXQ6OmNvbnRhaW5zKEhlYXBDZWwKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK2lubGluZSBib29sIElzb0NlbGxTZXQ6OmNvbnRhaW5zKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGhhbmRsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ibG9ja3NXaXRoQml0c1toYW5k
bGUtPmluZGV4KCldOworfQorCitpbmxpbmUgQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJs
b2NrPiogSXNvQ2VsbFNldDo6Yml0cyhNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fYml0c1toYW5kbGUtPmluZGV4KCldLmdldCgpOworfQorCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChj
b25zdCBGdW5jJiBmdW5jKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmNwcAkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgSXNvU3Vic3BhY2U6OmRpZFJlbW92ZUJsb2NrKHNpemVfdCAKICAgICAgICAgfSk7CiB9CiAK
LXZvaWQgSXNvU3Vic3BhY2U6OmRpZEJlZ2luU3dlZXBpbmdUb0ZyZWVMaXN0KE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKQordm9pZCBJc29TdWJzcGFjZTo6ZGlkU3dlZXBUb0ZyZWVMaXN0KE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewogICAgIG1fY2VsbFNldHMuZm9yRWFjaCgKICAg
ICAgICAgWyZdIChJc29DZWxsU2V0KiBzZXQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb1N1YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuaAkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgZGlkUmVzaXplQml0cyhzaXplX3QgbmV3U2l6ZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZW1vdmVCbG9jayhzaXplX3QgYmxvY2tJbmRleCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRCZWdpblN3ZWVwaW5nVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6
SGFuZGxlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTd2VlcFRvRnJlZUxpc3QoTWFya2VkQmxv
Y2s6OkhhbmRsZSopIG92ZXJyaWRlOwogICAgIAogICAgIHNpemVfdCBtX3NpemU7CiAgICAgQmxv
Y2tEaXJlY3RvcnkgbV9kaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNiw2MCArNDI2
LDU5IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXAoRnJlZUxpc3QKICAgICBpZiAo
c3BhY2UoKS0+aXNNYXJraW5nKCkpCiAgICAgICAgIGJsb2NrRm9vdGVyKCkubV9sb2NrLmxvY2so
KTsKICAgICAKLSAgICBzdWJzcGFjZSgpLT5kaWRCZWdpblN3ZWVwaW5nVG9GcmVlTGlzdCh0aGlz
KTsKLSAgICAKLSAgICBpZiAobmVlZHNEZXN0cnVjdGlvbikgeworICAgIGlmIChuZWVkc0Rlc3Ry
dWN0aW9uKQogICAgICAgICBzdWJzcGFjZSgpLT5maW5pc2hTd2VlcCgqdGhpcywgZnJlZUxpc3Qp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIEhhbmRsZSB0aGUgbm8tZGVz
dHJ1Y3RvciBzcGVjaWFsaXphdGlvbnMgaGVyZSwgc2luY2Ugd2UgaGF2ZSB0aGUgbW9zdCBvZiB0
aG9zZS4gVGhpcwotICAgIC8vIGVuc3VyZXMgdGhhdCB0aGV5IGRvbid0IGdldCByZS1zcGVjaWFs
aXplZCBmb3IgZXZlcnkgZGVzdHJ1Y3RvciBzcGFjZS4KLSAgICAKLSAgICBFbXB0eU1vZGUgZW1w
dHlNb2RlID0gdGhpcy0+ZW1wdHlNb2RlKCk7Ci0gICAgU2NyaWJibGVNb2RlIHNjcmliYmxlTW9k
ZSA9IHRoaXMtPnNjcmliYmxlTW9kZSgpOwotICAgIE5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFs
bG9jYXRlZE1vZGUgPSB0aGlzLT5uZXdseUFsbG9jYXRlZE1vZGUoKTsKLSAgICBNYXJrc01vZGUg
bWFya3NNb2RlID0gdGhpcy0+bWFya3NNb2RlKCk7Ci0gICAgCi0gICAgYXV0byB0cnlTcGVjaWFs
aXplZCA9IFsmXSAoKSAtPiBib29sIHsKLSAgICAgICAgaWYgKHN3ZWVwTW9kZSAhPSBTd2VlcFRv
RnJlZUxpc3QpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChzY3JpYmJs
ZU1vZGUgIT0gRG9udFNjcmliYmxlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBpZiAobmV3bHlBbGxvY2F0ZWRNb2RlICE9IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEhhbmRsZSB0
aGUgbm8tZGVzdHJ1Y3RvciBzcGVjaWFsaXphdGlvbnMgaGVyZSwgc2luY2Ugd2UgaGF2ZSB0aGUg
bW9zdCBvZiB0aG9zZS4gVGhpcworICAgICAgICAvLyBlbnN1cmVzIHRoYXQgdGhleSBkb24ndCBn
ZXQgcmUtc3BlY2lhbGl6ZWQgZm9yIGV2ZXJ5IGRlc3RydWN0b3Igc3BhY2UuCisgICAgCisgICAg
ICAgIEVtcHR5TW9kZSBlbXB0eU1vZGUgPSB0aGlzLT5lbXB0eU1vZGUoKTsKKyAgICAgICAgU2Ny
aWJibGVNb2RlIHNjcmliYmxlTW9kZSA9IHRoaXMtPnNjcmliYmxlTW9kZSgpOworICAgICAgICBO
ZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlID0gdGhpcy0+bmV3bHlBbGxvY2F0
ZWRNb2RlKCk7CisgICAgICAgIE1hcmtzTW9kZSBtYXJrc01vZGUgPSB0aGlzLT5tYXJrc01vZGUo
KTsKKyAgICAKKyAgICAgICAgYXV0byB0cnlTcGVjaWFsaXplZCA9IFsmXSAoKSAtPiBib29sIHsK
KyAgICAgICAgICAgIGlmIChzd2VlcE1vZGUgIT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChzY3JpYmJsZU1vZGUgIT0gRG9u
dFNjcmliYmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
IChuZXdseUFsbG9jYXRlZE1vZGUgIT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBzd2l0Y2ggKGVtcHR5
TW9kZSkgewotICAgICAgICBjYXNlIElzRW1wdHk6Ci0gICAgICAgICAgICBzd2l0Y2ggKG1hcmtz
TW9kZSkgewotICAgICAgICAgICAgY2FzZSBNYXJrc05vdFN0YWxlOgotICAgICAgICAgICAgICAg
IHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hh
c05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwg
TWFya3NOb3RTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tI
YXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQs
IE1hcmtzTm90U3RhbGUsIFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBjYXNlIE1hcmtzU3RhbGU6Ci0gICAgICAgICAgICAg
ICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2Nr
SGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
LCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hh
c05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwg
TWFya3NTdGFsZSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIHN3aXRjaCAoZW1wdHlNb2RlKSB7CisgICAgICAgICAgICBj
YXNlIElzRW1wdHk6CisgICAgICAgICAgICAgICAgc3dpdGNoIChtYXJrc01vZGUpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIE1hcmtzTm90U3RhbGU6CisgICAgICAgICAgICAgICAgICAgIHNwZWNp
YWxpemVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVz
dHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NO
b3RTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNOb0Rl
c3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtz
Tm90U3RhbGUsIEhhc05vRGVzdHJ1Y3RvcigpLCBbXSAoVk0mLCBKU0NlbGwqKSB7IH0pOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjYXNlIE1hcmtz
U3RhbGU6CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgSXNFbXB0
eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwg
RG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHks
IFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERv
ZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIEhhc05vRGVzdHJ1Y3RvcigpLCBb
XSAoVk0mLCBKU0NlbGwqKSB7IH0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIE5vdEVtcHR5OgorICAgICAgICAgICAgICAgIHN3aXRjaCAobWFya3NNb2RlKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBNYXJrc05vdFN0YWxlOgorICAgICAgICAgICAgICAgICAgICBzcGVj
aWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9E
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJr
c05vdFN0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05v
RGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFy
a3NOb3RTdGFsZSwgSGFzTm9EZXN0cnVjdG9yKCksIFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGNhc2UgTWFy
a3NTdGFsZToKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RF
bXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJs
ZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIElzRW1w
dHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUs
IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIEhhc05vRGVzdHJ1Y3Rvcigp
LCBbXSAoVk0mLCBKU0NlbGwqKSB7IH0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb3RFbXB0eToKLSAgICAgICAg
ICAgIHN3aXRjaCAobWFya3NNb2RlKSB7Ci0gICAgICAgICAgICBjYXNlIE1hcmtzTm90U3RhbGU6
Ci0gICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBU
b0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhh
dmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVw
VG9GcmVlTGlzdCwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RI
YXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGUsIFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBjYXNlIE1hcmtzU3Rh
bGU6Ci0gICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dl
ZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05v
dEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVw
VG9GcmVlTGlzdCwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RI
YXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH07
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH07CiAgICAgCi0gICAgaWYgKHRy
eVNwZWNpYWxpemVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRoZSB0ZW1wbGF0ZSBh
cmd1bWVudHMgZG9uJ3QgbWF0dGVyIGJlY2F1c2UgdGhlIGZpcnN0IG9uZSBpcyBmYWxzZS4KLSAg
ICBzcGVjaWFsaXplZFN3ZWVwPGZhbHNlLCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzTm9E
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBIYXNOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4o
ZnJlZUxpc3QsIGVtcHR5TW9kZSwgc3dlZXBNb2RlLCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIHNj
cmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlLCBtYXJrc01vZGUsIFtdIChWTSYsIEpTQ2Vs
bCopIHsgfSk7CisgICAgICAgIGlmICghdHJ5U3BlY2lhbGl6ZWQoKSkgeworICAgICAgICAgICAg
Ly8gVGhlIHRlbXBsYXRlIGFyZ3VtZW50cyBkb24ndCBtYXR0ZXIgYmVjYXVzZSB0aGUgZmlyc3Qg
b25lIGlzIGZhbHNlLgorICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDxmYWxzZSwgSXNFbXB0
eSwgU3dlZXBPbmx5LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgSGFzTmV3
bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBlbXB0eU1vZGUsIHN3ZWVwTW9kZSwg
QmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVkTW9kZSwg
bWFya3NNb2RlLCBIYXNOb0Rlc3RydWN0b3IoKSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dCkKKyAgICAgICAgc3Vic3BhY2UoKS0+ZGlkU3dlZXBUb0ZyZWVMaXN0KHRoaXMpOwogfQogCiBi
b29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRnJlZUxpc3RlZENlbGwoY29uc3Qgdm9pZCogdGFy
Z2V0KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CShyZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTAgKzEzMywyMCBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIG1pc3Rha2Ugb2YgbWFraW5nIGEgcG9wIGZyZWVsaXN0IHJhdGhlciB0aGFuIGEgYnVt
cCBmcmVlbGlzdC4KICAgICAgICAgdm9pZCBzd2VlcChGcmVlTGlzdCopOwogICAgICAgICAKLSAg
ICAgICAgLy8gVGhpcyBpcyB0byBiZSBjYWxsZWQgYnkgU3Vic3BhY2UuCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIERlc3Ryb3lGdW5jPgogICAgICAgICB2b2lkIGZpbmlzaFN3ZWVwS25vd2lu
Z0hlYXBDZWxsVHlwZShGcmVlTGlzdCosIGNvbnN0IERlc3Ryb3lGdW5jJik7CiAgICAgICAgIAor
ICAgICAgICBzdHJ1Y3QgSGFzTm9EZXN0cnVjdG9yIHsKKyAgICAgICAgICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBvcGVyYXRvcigpKHNpemVfdCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAg
ICAgfTsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCBBbHdheXNIYXNEZXN0cnVjdG9yIHsKKyAg
ICAgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvcigpKHNpemVfdCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzRGVzdHJ1Y3RvckZ1bmMsIHR5cGVuYW1lIERlc3Ryb3lGdW5jPgorICAgICAgICB2
b2lkIGZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShGcmVlTGlzdCosIGNvbnN0IEhhc0Rl
c3RydWN0b3JGdW5jJiwgY29uc3QgRGVzdHJveUZ1bmMmKTsKKwogICAgICAgICB2b2lkIHVuc3dl
ZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpOwogICAgICAgICAKICAgICAgICAgdm9pZCB6YXAoY29u
c3QgRnJlZUxpc3QmKTsKQEAgLTIwOSw4ICsyMTksOCBAQCBwdWJsaWM6CiAgICAgICAgIE5ld2x5
QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUoKTsKICAgICAgICAgTWFya3NNb2RlIG1h
cmtzTW9kZSgpOwogICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCwgRW1wdHlNb2RlLCBT
d2VlcE1vZGUsIFN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2Nh
dGVkTW9kZSwgTWFya3NNb2RlLCB0eXBlbmFtZSBEZXN0cm95RnVuYz4KLSAgICAgICAgdm9pZCBz
cGVjaWFsaXplZFN3ZWVwKEZyZWVMaXN0KiwgRW1wdHlNb2RlLCBTd2VlcE1vZGUsIFN3ZWVwRGVz
dHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya3NNb2Rl
LCBjb25zdCBEZXN0cm95RnVuYyYpOworICAgICAgICB0ZW1wbGF0ZTxib29sLCBFbXB0eU1vZGUs
IFN3ZWVwTW9kZSwgU3dlZXBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxv
Y2F0ZWRNb2RlLCBNYXJrc01vZGUsIHR5cGVuYW1lIEhhc0Rlc3RydWN0b3JGdW5jLCB0eXBlbmFt
ZSBEZXN0cm95RnVuYz4KKyAgICAgICAgdm9pZCBzcGVjaWFsaXplZFN3ZWVwKEZyZWVMaXN0Kiwg
RW1wdHlNb2RlLCBTd2VlcE1vZGUsIFN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUs
IE5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya3NNb2RlLCBjb25zdCBIYXNEZXN0cnVjdG9yRnVuYyYs
IGNvbnN0IERlc3Ryb3lGdW5jJik7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldElzRnJlZUxp
c3RlZCgpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0
LDggKzIyNCw4IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUMKIC8v
CiAvLyBPbmx5IHRoZSBEb2VzTm90TmVlZERlc3RydWN0aW9uIG9uZSBzaG91bGQgYmUgc3BlY2lh
bGl6ZWQgYnkgTWFya2VkQmxvY2suCiAKLXRlbXBsYXRlPGJvb2wgc3BlY2lhbGl6ZSwgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIHNwZWNpYWxpemVkRW1wdHlNb2RlLCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpTd2VlcE1vZGUgc3BlY2lhbGl6ZWRTd2VlcE1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OlN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIHNwZWNpYWxpemVkRGVzdHJ1Y3Rpb25Nb2RlLCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc3BlY2lhbGl6ZWRTY3JpYmJsZU1vZGUs
IE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBzcGVjaWFsaXplZE5ld2x5
QWxsb2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TWFya3NNb2RlIHNwZWNpYWxpemVk
TWFya3NNb2RlLCB0eXBlbmFtZSBEZXN0cm95RnVuYz4KLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3BlY2lhbGl6ZWRTd2VlcChGcmVlTGlzdCogZnJlZUxpc3QsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBz
d2VlcE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIGRlc3Ry
dWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9k
ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVk
TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TWFya3NNb2RlIG1hcmtzTW9kZSwgY29uc3QgRGVz
dHJveUZ1bmMmIGRlc3Ryb3lGdW5jKQordGVtcGxhdGU8Ym9vbCBzcGVjaWFsaXplLCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgc3BlY2lhbGl6ZWRFbXB0eU1vZGUsIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OlN3ZWVwTW9kZSBzcGVjaWFsaXplZFN3ZWVwTW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U3dlZXBEZXN0cnVjdGlvbk1vZGUgc3BlY2lhbGl6ZWREZXN0cnVjdGlvbk1vZGUsIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzcGVjaWFsaXplZFNjcmliYmxlTW9kZSwg
TWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIHNwZWNpYWxpemVkTmV3bHlB
bGxvY2F0ZWRNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpNYXJrc01vZGUgc3BlY2lhbGl6ZWRN
YXJrc01vZGUsIHR5cGVuYW1lIEhhc0Rlc3RydWN0b3JGdW5jLCB0eXBlbmFtZSBEZXN0cm95RnVu
Yz4KK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcChGcmVlTGlzdCog
ZnJlZUxpc3QsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OlN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlB
bGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TWFy
a3NNb2RlIG1hcmtzTW9kZSwgY29uc3QgSGFzRGVzdHJ1Y3RvckZ1bmMmIGhhc0Rlc3RydWN0b3Is
IGNvbnN0IERlc3Ryb3lGdW5jJiBkZXN0cm95RnVuYykKIHsKICAgICBpZiAoc3BlY2lhbGl6ZSkg
ewogICAgICAgICBlbXB0eU1vZGUgPSBzcGVjaWFsaXplZEVtcHR5TW9kZTsKQEAgLTI1OSw2ICsy
NTksOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlCiAgICAgCiAg
ICAgbV9kaXJlY3RvcnktPnNldElzRGVzdHJ1Y3RpYmxlKE5vTG9ja2luZ05lY2Vzc2FyeSwgdGhp
cywgZmFsc2UpOwogICAgIAorICAgIHVuc2lnbmVkIGVuZEF0b20gPSBtX2VuZEF0b207CisgICAg
dW5zaWduZWQgYXRvbXNQZXJDZWxsID0gbV9hdG9tc1BlckNlbGw7CisKICAgICBpZiAoT3B0aW9u
czo6dXNlQnVtcEFsbG9jYXRvcigpCiAgICAgICAgICYmIGVtcHR5TW9kZSA9PSBJc0VtcHR5CiAg
ICAgICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
KSB7CkBAIC0yODUsOCArMjg4LDExIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lh
bGl6ZWRTd2UKICAgICAgICAgaWYgKHNwYWNlKCktPmlzTWFya2luZygpKQogICAgICAgICAgICAg
Zm9vdGVyLm1fbG9jay51bmxvY2soKTsKICAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSAhPSBC
bG9ja0hhc05vRGVzdHJ1Y3RvcnMpIHsKLSAgICAgICAgICAgIGZvciAoY2hhciogY2VsbCA9IHBh
eWxvYWRCZWdpbjsgY2VsbCA8IHBheWxvYWRFbmQ7IGNlbGwgKz0gY2VsbFNpemUpCi0gICAgICAg
ICAgICAgICAgZGVzdHJveShjZWxsKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZW5kQXRvbTsgaSArPSBhdG9tc1BlckNlbGwpIHsKKyAgICAgICAgICAgICAgICBIZWFwQ2Vs
bCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmJsb2NrLmF0b21zKClb
aV0pOworICAgICAgICAgICAgICAgIGlmIChoYXNEZXN0cnVjdG9yKGkpKQorICAgICAgICAgICAg
ICAgICAgICBkZXN0cm95KGNlbGwpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CiAgICAgICAgICAgICBpZiAoc2Ny
aWJibGVNb2RlID09IFNjcmliYmxlKQpAQCAtMzIyLDcgKzMyOCw3IEBAIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2UKICAgICAgICAgICAgICsrY291bnQ7CiAgICAgICAg
IH0KICAgICB9OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1f
YXRvbXNQZXJDZWxsKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbmRBdG9tOyBpICs9
IGF0b21zUGVyQ2VsbCkgewogICAgICAgICBpZiAoZW1wdHlNb2RlID09IE5vdEVtcHR5CiAgICAg
ICAgICAgICAmJiAoKG1hcmtzTW9kZSA9PSBNYXJrc05vdFN0YWxlICYmIGZvb3Rlci5tX21hcmtz
LmdldChpKSkKICAgICAgICAgICAgICAgICB8fCAobmV3bHlBbGxvY2F0ZWRNb2RlID09IEhhc05l
d2x5QWxsb2NhdGVkICYmIGZvb3Rlci5tX25ld2x5QWxsb2NhdGVkLmdldChpKSkpKSB7CkBAIC0z
MzAsNiArMzM2LDkgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGlmICgh
aGFzRGVzdHJ1Y3RvcihpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKICAgICAg
ICAgaWYgKGRlc3RydWN0aW9uTW9kZSA9PSBCbG9ja0hhc0Rlc3RydWN0b3JzQW5kQ29sbGVjdG9y
SXNSdW5uaW5nKQogICAgICAgICAgICAgZGVhZENlbGxzLmFwcGVuZChpKTsKICAgICAgICAgZWxz
ZQpAQCAtMzU4LDggKzM2Nyw4IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6
ZWRTd2UKICAgICAgICAgZGF0YUxvZygiU2xvd2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIo
JmJsb2NrKSwgIiB3aXRoIGNlbGwgc2l6ZSAiLCBjZWxsU2l6ZSwgIiBhbmQgYXR0cmlidXRlcyAi
LCBtX2F0dHJpYnV0ZXMsICI6ICIsIHBvaW50ZXJEdW1wKGZyZWVMaXN0KSwgIlxuIik7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIERlc3Ryb3lGdW5jPgotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoRnJlZUxpc3QqIGZyZWVMaXN0LCBjb25z
dCBEZXN0cm95RnVuYyYgZGVzdHJveUZ1bmMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNEZXN0cnVj
dG9yRnVuYywgdHlwZW5hbWUgRGVzdHJveUZ1bmM+Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShGcmVlTGlzdCogZnJlZUxpc3QsIGNvbnN0
IEhhc0Rlc3RydWN0b3JGdW5jJiBoYXNEZXN0cnVjdG9yLCBjb25zdCBEZXN0cm95RnVuYyYgZGVz
dHJveUZ1bmMpCiB7CiAgICAgU3dlZXBNb2RlIHN3ZWVwTW9kZSA9IGZyZWVMaXN0ID8gU3dlZXBU
b0ZyZWVMaXN0IDogU3dlZXBPbmx5OwogICAgIFN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0
aW9uTW9kZSA9IHRoaXMtPnN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlKCk7CkBAIC0zODIsMjAgKzM5MSwy
MCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZpbmlzaFN3ZWVwS25vCiAgICAgICAgICAg
ICBjYXNlIFN3ZWVwT25seToKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hcmtzTW9kZSkgewog
ICAgICAgICAgICAgICAgIGNhc2UgTWFya3NOb3RTdGFsZToKLSAgICAgICAgICAgICAgICAgICAg
c3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1
Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RT
dGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywg
RG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlLCBk
ZXN0cm95RnVuYyk7CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwg
SXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERv
ZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5
LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhh
dmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZSwgaGFzRGVzdHJ1Y3RvciwgZGVzdHJveUZ1
bmMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBj
YXNlIE1hcmtzU3RhbGU6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1
ZSwgSXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUs
IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5
LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhh
dmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZSwgZGVzdHJveUZ1bmMpOworICAgICAgICAgICAg
ICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tI
YXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBN
YXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0
b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUs
IGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lGdW5jKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBjYXNlIFN3ZWVwVG9GcmVlTGlzdDoKICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG1hcmtzTW9kZSkgewogICAgICAgICAgICAgICAgIGNhc2UgTWFy
a3NOb3RTdGFsZToKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJ
c0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJs
ZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZT4oZnJlZUxpc3QsIElz
RW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxl
LCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlLCBkZXN0cm95RnVuYyk7
CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dl
ZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RI
YXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2Vl
cFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhh
dmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZSwgaGFzRGVzdHJ1Y3RvciwgZGVzdHJveUZ1
bmMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBj
YXNlIE1hcmtzU3RhbGU6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1
ZSwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2Ny
aWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBJ
c0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJs
ZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZSwgZGVzdHJveUZ1bmMpOwor
ICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIElzRW1wdHksIFN3ZWVw
VG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2
ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0Zy
ZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3
bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lGdW5jKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQpAQCAtNDA1LDIwICs0MTQsMjAgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpm
aW5pc2hTd2VlcEtubwogICAgICAgICAgICAgY2FzZSBTd2VlcE9ubHk6CiAgICAgICAgICAgICAg
ICAgc3dpdGNoIChtYXJrc01vZGUpIHsKICAgICAgICAgICAgICAgICBjYXNlIE1hcmtzTm90U3Rh
bGU6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHks
IFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2
ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwgTm90RW1wdHksIFN3ZWVw
T25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5
QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlLCBkZXN0cm95RnVuYyk7CisgICAgICAgICAgICAgICAg
ICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNE
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJr
c05vdFN0YWxlPihmcmVlTGlzdCwgTm90RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVj
dG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0
YWxlLCBoYXNEZXN0cnVjdG9yLCBkZXN0cm95RnVuYyk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGNhc2UgTWFya3NTdGFsZToKLSAgICAgICAgICAg
ICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBPbmx5LCBCbG9j
a0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQs
IE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3Ry
dWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3Rh
bGUsIGRlc3Ryb3lGdW5jKTsKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0
cnVlLCBOb3RFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJi
bGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBOb3RF
bXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNO
b3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lG
dW5jKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICBjYXNlIFN3ZWVwVG9GcmVlTGlzdDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hcmtz
TW9kZSkgewogICAgICAgICAgICAgICAgIGNhc2UgTWFya3NOb3RTdGFsZToKLSAgICAgICAgICAg
ICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0
LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxv
Y2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0
LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxv
Y2F0ZWQsIE1hcmtzTm90U3RhbGUsIGRlc3Ryb3lGdW5jKTsKKyAgICAgICAgICAgICAgICAgICAg
c3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hh
c0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1h
cmtzTm90U3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hh
c0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1h
cmtzTm90U3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lGdW5jKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXJrc1N0YWxlOgotICAg
ICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcFRv
RnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVO
ZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIE5vdEVtcHR5LCBTd2VlcFRvRnJl
ZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZCwgTWFya3NTdGFsZSwgZGVzdHJveUZ1bmMpOworICAgICAgICAgICAgICAgICAg
ICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2Nr
SGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwg
TWFya3NTdGFsZT4oZnJlZUxpc3QsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFz
RGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFy
a3NTdGFsZSwgaGFzRGVzdHJ1Y3RvciwgZGVzdHJveUZ1bmMpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00MzEs
NyArNDQwLDEzIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZmluaXNoU3dlZXBLbm8KICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMgZG9uJ3Qg
bWF0dGVyIGJlY2F1c2UgdGhlIGZpcnN0IG9uZSBpcyBmYWxzZS4KLSAgICBzcGVjaWFsaXplZFN3
ZWVwPGZhbHNlLCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9u
dFNjcmliYmxlLCBIYXNOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIGVtcHR5
TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlBbGxv
Y2F0ZWRNb2RlLCBtYXJrc01vZGUsIGRlc3Ryb3lGdW5jKTsKKyAgICBzcGVjaWFsaXplZFN3ZWVw
PGZhbHNlLCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNj
cmliYmxlLCBIYXNOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIGVtcHR5TW9k
ZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0
ZWRNb2RlLCBtYXJrc01vZGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lGdW5jKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgRGVzdHJveUZ1bmM+Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZp
bmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShGcmVlTGlzdCogZnJlZUxpc3QsIGNvbnN0IERl
c3Ryb3lGdW5jJiBkZXN0cm95RnVuYykKK3sKKyAgICBmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2Vs
bFR5cGUoZnJlZUxpc3QsIEFsd2F5c0hhc0Rlc3RydWN0b3IoKSwgZGVzdHJveUZ1bmMpOwogfQog
CiBpbmxpbmUgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBEZXN0cnVjdGlvbk1vZGUgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3dlZXBEZXN0cnVjdGlvbk1vZGUoKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyAr
MTQyLDcgQEAgdm9pZCBTdWJzcGFjZTo6ZGlkUmVtb3ZlQmxvY2soc2l6ZV90KQogewogfQogCi12
b2lkIFN1YnNwYWNlOjpkaWRCZWdpblN3ZWVwaW5nVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFu
ZGxlKikKK3ZvaWQgU3Vic3BhY2U6OmRpZFN3ZWVwVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFu
ZGxlKikKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCShy
ZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVzaXplQml0cyhzaXplX3QgbmV3U2l6ZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlbW92ZUJsb2NrKHNpemVfdCBibG9ja0luZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
QmVnaW5Td2VlcGluZ1RvRnJlZUxpc3QoTWFya2VkQmxvY2s6OkhhbmRsZSopOworICAgIHZpcnR1
YWwgdm9pZCBkaWRTd2VlcFRvRnJlZUxpc3QoTWFya2VkQmxvY2s6OkhhbmRsZSopOyAvLyBUaGlz
IGlzIHRoZSBsYXN0IHRoaW5nIHRoYXQgc3dlZXAgZG9lcy4KIAogcHJvdGVjdGVkOgogICAgIHZv
aWQgaW5pdGlhbGl6ZShIZWFwQ2VsbFR5cGUqLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShy
ZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQqIHRyeUFsbG9jYXRlQ2VsbEhlbHBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12
b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUpCitBTFdBWVNfSU5MSU5F
IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiBoZWFwLCBzaXplX3Qgc2l6ZSkKIHsKICAgICByZXR1
cm4gdHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+KGhlYXAsIHNpemUsIG51bGxwdHIsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JvcGVTdHJpbmdI
ZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5oIgorCisjaW5jbHVkZSAiSXNv
Q2VsbFNldElubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1JvcGVTdHJp
bmdIYXNEZXN0cnVjdG9yRnVuYyB7CitwdWJsaWM6CisgICAgSlNSb3BlU3RyaW5nSGFzRGVzdHJ1
Y3RvckZ1bmMoQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPiogYml0cykKKyAgICAg
ICAgOiBtX2JpdHMoYml0cykKKyAgICB7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBvcGVyYXRvcigpKHNpemVfdCBpKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
Yml0cy0+Z2V0KGkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBCaXRtYXA8TWFya2VkQmxvY2s6
OmF0b21zUGVyQmxvY2s+KiBtX2JpdHM7Cit9OworCitzdHJ1Y3QgSlNSb3BlU3RyaW5nRGVzdHJv
eUZ1bmMgeworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBj
ZWxsKSBjb25zdAorICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNSb3BlU3RyaW5nKj4oY2Vs
bCktPkpTUm9wZVN0cmluZzo6fkpTUm9wZVN0cmluZygpOworICAgIH0KK307CisKK0pTUm9wZVN0
cmluZ0hlYXBDZWxsVHlwZTo6SlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlKCkKKyAgICA6IEhlYXBD
ZWxsVHlwZShDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxs
KSkKK3sKK30KKworSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlOjp+SlNSb3BlU3RyaW5nSGVhcENl
bGxUeXBlKCkKK3sKK30KKwordm9pZCBKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGU6OmZpbmlzaFN3
ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KQorewor
ICAgIFZNJiB2bSA9ICpoYW5kbGUudm0oKTsKKyAgICAKKyAgICBpZiAodm0ucm9wZVN0cmluZ3NX
aXRoRGVzdHJ1Y3RvcnMuY29udGFpbnMoJmhhbmRsZSkpIHsKKyAgICAgICAgaGFuZGxlLmZpbmlz
aFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZSgKKyAgICAgICAgICAgIGZyZWVMaXN0LAorICAgICAg
ICAgICAgSlNSb3BlU3RyaW5nSGFzRGVzdHJ1Y3RvckZ1bmModm0ucm9wZVN0cmluZ3NXaXRoRGVz
dHJ1Y3RvcnMuYml0cygmaGFuZGxlKSksCisgICAgICAgICAgICBKU1JvcGVTdHJpbmdEZXN0cm95
RnVuYygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBoYW5kbGUuZmluaXNo
U3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0LCBKU1JvcGVTdHJpbmdEZXN0cm95RnVu
YygpKTsKK30KKwordm9pZCBKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGU6OmRlc3Ryb3koVk0mIHZt
LCBKU0NlbGwqIGNlbGwpCit7CisgICAgSlNSb3BlU3RyaW5nRGVzdHJveUZ1bmMoKSh2bSwgY2Vs
bCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JvcGVTdHJpbmdI
ZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSGVhcENlbGxUeXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1JvcGVT
dHJpbmdIZWFwQ2VsbFR5cGUgOiBwdWJsaWMgSGVhcENlbGxUeXBlIHsKK3B1YmxpYzoKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUoKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIH5KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUoKTsKKyAgICAKKyAg
ICB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlzdCopIG92ZXJy
aWRlOworICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCopIG92ZXJyaWRlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5jcHAJKHJldmlzaW9uIDIzMjIwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAKKyNpbmNsdWRlICJJc29D
ZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtMTgx
LDYgKzE4Miw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVRvQXRvbWljU3QKICAg
ICBpZiAobGVuZ3RoKCkgPiBtYXhMZW5ndGhGb3JPblN0YWNrUmVzb2x2ZSkgewogICAgICAgICBy
ZXNvbHZlUm9wZShleGVjKTsKICAgICAgICAgbV92YWx1ZSA9IEF0b21pY1N0cmluZyhtX3ZhbHVl
KTsKKyAgICAgICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxlKGV4ZWMtPnZtKCkpOwogICAgICAgICBz
ZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJpdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTE4OSwxMSArMTkxLDEzIEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVRv
QXRvbWljU3QKICAgICAgICAgTENoYXIgYnVmZmVyW21heExlbmd0aEZvck9uU3RhY2tSZXNvbHZl
XTsKICAgICAgICAgcmVzb2x2ZVJvcGVJbnRlcm5hbDgoYnVmZmVyKTsKICAgICAgICAgbV92YWx1
ZSA9IEF0b21pY1N0cmluZyhidWZmZXIsIGxlbmd0aCgpKTsKKyAgICAgICAgZGlkQmVjb21lRGVz
dHJ1Y3RpYmxlKGV4ZWMtPnZtKCkpOwogICAgICAgICBzZXRJczhCaXQobV92YWx1ZS5pbXBsKCkt
PmlzOEJpdCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBVQ2hhciBidWZmZXJbbWF4TGVuZ3Ro
Rm9yT25TdGFja1Jlc29sdmVdOwogICAgICAgICByZXNvbHZlUm9wZUludGVybmFsMTYoYnVmZmVy
KTsKICAgICAgICAgbV92YWx1ZSA9IEF0b21pY1N0cmluZyhidWZmZXIsIGxlbmd0aCgpKTsKKyAg
ICAgICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxlKGV4ZWMtPnZtKCkpOwogICAgICAgICBzZXRJczhC
aXQobV92YWx1ZS5pbXBsKCktPmlzOEJpdCgpKTsKICAgICB9CiAKQEAgLTIxNiw2ICsyMjAsNyBA
QCBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gSlNSb3BlU3RyaW5nOjpyCiAgICAgICAgIHJlc29s
dmVSb3BlKGV4ZWMpOwogICAgICAgICBpZiAoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0
aW5nQXRvbWljU3RyaW5nID0gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwKG1fdmFsdWUuaW1wbCgp
KSkgewogICAgICAgICAgICAgbV92YWx1ZSA9ICpleGlzdGluZ0F0b21pY1N0cmluZzsKKyAgICAg
ICAgICAgIGRpZEJlY29tZURlc3RydWN0aWJsZShleGVjLT52bSgpKTsKICAgICAgICAgICAgIHNl
dElzOEJpdChtX3ZhbHVlLmltcGwoKS0+aXM4Qml0KCkpOwogICAgICAgICAgICAgY2xlYXJGaWJl
cnMoKTsKICAgICAgICAgICAgIHJldHVybiBleGlzdGluZ0F0b21pY1N0cmluZzsKQEAgLTIyOCw2
ICsyMzMsNyBAQCBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gSlNSb3BlU3RyaW5nOjpyCiAgICAg
ICAgIHJlc29sdmVSb3BlSW50ZXJuYWw4KGJ1ZmZlcik7CiAgICAgICAgIGlmIChSZWZQdHI8QXRv
bWljU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9taWNTdHJpbmcgPSBBdG9taWNTdHJpbmdJbXBsOjps
b29rVXAoYnVmZmVyLCBsZW5ndGgoKSkpIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSAqZXhpc3Rp
bmdBdG9taWNTdHJpbmc7CisgICAgICAgICAgICBkaWRCZWNvbWVEZXN0cnVjdGlibGUoZXhlYy0+
dm0oKSk7CiAgICAgICAgICAgICBzZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJpdCgpKTsK
ICAgICAgICAgICAgIGNsZWFyRmliZXJzKCk7CiAgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdB
dG9taWNTdHJpbmc7CkBAIC0yMzcsNiArMjQzLDcgQEAgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+
IEpTUm9wZVN0cmluZzo6cgogICAgICAgICByZXNvbHZlUm9wZUludGVybmFsMTYoYnVmZmVyKTsK
ICAgICAgICAgaWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmlu
ZyA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChidWZmZXIsIGxlbmd0aCgpKSkgewogICAgICAg
ICAgICAgbV92YWx1ZSA9ICpleGlzdGluZ0F0b21pY1N0cmluZzsKKyAgICAgICAgICAgIGRpZEJl
Y29tZURlc3RydWN0aWJsZShleGVjLT52bSgpKTsKICAgICAgICAgICAgIHNldElzOEJpdChtX3Zh
bHVlLmltcGwoKS0+aXM4Qml0KCkpOwogICAgICAgICAgICAgY2xlYXJGaWJlcnMoKTsKICAgICAg
ICAgICAgIHJldHVybiBleGlzdGluZ0F0b21pY1N0cmluZzsKQEAgLTI1Myw2ICsyNjAsNyBAQCB2
b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGUoRXhlY1N0YXRlCiAgICAgaWYgKGlzU3Vic3Ry
aW5nKCkpIHsKICAgICAgICAgQVNTRVJUKCFzdWJzdHJpbmdCYXNlKCktPmlzUm9wZSgpKTsKICAg
ICAgICAgbV92YWx1ZSA9IHN1YnN0cmluZ0Jhc2UoKS0+bV92YWx1ZS5zdWJzdHJpbmdTaGFyaW5n
SW1wbChzdWJzdHJpbmdPZmZzZXQoKSwgbGVuZ3RoKCkpOworICAgICAgICBkaWRCZWNvbWVEZXN0
cnVjdGlibGUoZXhlYy0+dm0oKSk7CiAgICAgICAgIHN1YnN0cmluZ0Jhc2UoKS5jbGVhcigpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjYyLDYgKzI3MCw3IEBAIHZvaWQgSlNSb3BlU3Ry
aW5nOjpyZXNvbHZlUm9wZShFeGVjU3RhdGUKICAgICAgICAgaWYgKGF1dG8gbmV3SW1wbCA9IFN0
cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCksIGJ1ZmZlcikpIHsKICAg
ICAgICAgICAgIEhlYXA6OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG5l
d0ltcGwtPmNvc3QoKSk7CiAgICAgICAgICAgICBtX3ZhbHVlID0gV1RGTW92ZShuZXdJbXBsKTsK
KyAgICAgICAgICAgIGRpZEJlY29tZURlc3RydWN0aWJsZShleGVjLT52bSgpKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG91dE9mTWVtb3J5KGV4ZWMpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjc2LDYgKzI4NSw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZShF
eGVjU3RhdGUKICAgICBpZiAoYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChsZW5ndGgoKSwgYnVmZmVyKSkgewogICAgICAgICBIZWFwOjpoZWFwKHRoaXMp
LT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChuZXdJbXBsLT5jb3N0KCkpOwogICAgICAgICBt
X3ZhbHVlID0gV1RGTW92ZShuZXdJbXBsKTsKKyAgICAgICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxl
KGV4ZWMtPnZtKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG91dE9mTWVtb3J5KGV4ZWMpOwog
ICAgICAgICByZXR1cm47CkBAIC0zNzYsNiArMzg2LDExIEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpy
ZXNvbHZlUm9wZVNsb3dDYXNlKFUKICAgICBBU1NFUlQoYnVmZmVyID09IHBvc2l0aW9uKTsKIH0K
IAordm9pZCBKU1JvcGVTdHJpbmc6OmRpZEJlY29tZURlc3RydWN0aWJsZShWTSYgdm0pIGNvbnN0
Cit7CisgICAgdm0ucm9wZVN0cmluZ3NXaXRoRGVzdHJ1Y3RvcnMuYWRkKHRoaXMpOworfQorCiB2
b2lkIEpTUm9wZVN0cmluZzo6b3V0T2ZNZW1vcnkoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDIzMjIwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEwICs4Nyw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIAotICAgIC8vIFdlIHNwZWNpYWxp
emUgdGhlIHN0cmluZyBzdWJzcGFjZSB0byBnZXQgdGhlIGZhc3Rlc3QgcG9zc2libGUgc3dlZXAu
IFRoaXMgd291bGRuJ3QgYmUKLSAgICAvLyBuZWNlc3NhcnkgaWYgSlNTdHJpbmcgZGlkbid0IGhh
dmUgYSBkZXN0cnVjdG9yLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lPgotICAgIHN0YXRpYyBDb21w
bGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICByZXR1cm4gJnZtLnN0cmluZ1Nw
YWNlOwogICAgIH0KQEAgLTI0MCw2ICsyMzgsMTIgQEAgY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFs
IDogcHVibGljIEpTU3RyaQogICAgIGZyaWVuZCBKU1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRl
cihWTSopOwogCiBwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+CisgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZt
LnJvcGVTdHJpbmdTcGFjZTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIE92ZXJm
bG93SGFuZGxlciA9IENyYXNoT25PdmVyZmxvdz4KICAgICBjbGFzcyBSb3BlQnVpbGRlciA6IHB1
YmxpYyBPdmVyZmxvd0hhbmRsZXIgewogICAgIHB1YmxpYzoKQEAgLTI5MiwyOCArMjk2LDI4IEBA
IHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKICAgICB7CiAg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKCFzdW1PdmVy
Zmxvd3M8aW50MzJfdD4oczEtPmxlbmd0aCgpLCBzMi0+bGVuZ3RoKCkpKTsKICAgICAgICAgc2V0
TGVuZ3RoKHMxLT5sZW5ndGgoKSArIHMyLT5sZW5ndGgoKSk7CiAgICAgICAgIHNldElzOEJpdChz
MS0+aXM4Qml0KCkgJiYgczItPmlzOEJpdCgpKTsKICAgICAgICAgc2V0SXNTdWJzdHJpbmcoZmFs
c2UpOwotICAgICAgICBmaWJlcigwKS5zZXQodm0sIHRoaXMsIHMxKTsKLSAgICAgICAgZmliZXIo
MSkuc2V0KHZtLCB0aGlzLCBzMik7CisgICAgICAgIGZpYmVyKDApLnNldFdpdGhvdXRXcml0ZUJh
cnJpZXIoczEpOworICAgICAgICBmaWJlcigxKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHMyKTsK
ICAgICAgICAgZmliZXIoMikuY2xlYXIoKTsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1N0cmluZyogczEs
IEpTU3RyaW5nKiBzMiwgSlNTdHJpbmcqIHMzKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQoIXN1bU92ZXJmbG93czxpbnQzMl90PihzMS0+
bGVuZ3RoKCksIHMyLT5sZW5ndGgoKSwgczMtPmxlbmd0aCgpKSk7CiAgICAgICAgIHNldExlbmd0
aChzMS0+bGVuZ3RoKCkgKyBzMi0+bGVuZ3RoKCkgKyBzMy0+bGVuZ3RoKCkpOwogICAgICAgICBz
ZXRJczhCaXQoczEtPmlzOEJpdCgpICYmIHMyLT5pczhCaXQoKSAmJiAgczMtPmlzOEJpdCgpKTsK
ICAgICAgICAgc2V0SXNTdWJzdHJpbmcoZmFsc2UpOwotICAgICAgICBmaWJlcigwKS5zZXQodm0s
IHRoaXMsIHMxKTsKLSAgICAgICAgZmliZXIoMSkuc2V0KHZtLCB0aGlzLCBzMik7Ci0gICAgICAg
IGZpYmVyKDIpLnNldCh2bSwgdGhpcywgczMpOworICAgICAgICBmaWJlcigwKS5zZXRXaXRob3V0
V3JpdGVCYXJyaWVyKHMxKTsKKyAgICAgICAgZmliZXIoMSkuc2V0V2l0aG91dFdyaXRlQmFycmll
cihzMik7CisgICAgICAgIGZpYmVyKDIpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoczMpOwogICAg
IH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
U3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTQwMiwx
MyArNDA2LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19tYXhJbnRl
cm5hbFJvcGVMZW5ndGggPSAzOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBKU1N0cmluZyogY3Jl
YXRlKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIpCisgICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcq
IHMyKQogICAgIHsKICAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmcodm0p
OwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtLCBzMSwgczIpOwogICAgICAg
ICByZXR1cm4gbmV3U3RyaW5nOwogICAgIH0KLSAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShW
TSYgdm0sIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyLCBKU1N0cmluZyogczMpCisgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIEpTU3RyaW5nKiBzMSwg
SlNTdHJpbmcqIHMyLCBKU1N0cmluZyogczMpCiAgICAgewogICAgICAgICBKU1JvcGVTdHJpbmcq
IG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0u
aGVhcCkpIEpTUm9wZVN0cmluZyh2bSk7CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRp
b24odm0sIHMxLCBzMiwgczMpOwpAQCAtNDMxLDcgKzQzNSw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGVhckZpYmVycygpIGNvbnN0OwogICAgIFN0cmluZ1ZpZXcgdW5zYWZlVmlldyhFeGVjU3Rh
dGUqKSBjb25zdDsKICAgICBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgdmlld1dpdGhV
bmRlcmx5aW5nU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwotCisgICAgCisgICAgdm9pZCBkaWRC
ZWNvbWVEZXN0cnVjdGlibGUoVk0mKSBjb25zdDsKKyAgICAKICAgICBXcml0ZUJhcnJpZXJCYXNl
PEpTU3RyaW5nPiYgZmliZXIodW5zaWduZWQgaSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VCghaXNTdWJzdHJpbmcoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CShyZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJKU01hcEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaCIKKyNpbmNsdWRlICJKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUu
aCIKICNpbmNsdWRlICJKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCiAj
aW5jbHVkZSAiSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZl
dGNoZXIuaCIKQEAgLTI1Miw2ICsyNTMsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgLCBjZWxsRGFuZ2Vyb3VzQml0c0hlYXBDZWxsVHlwZShzdGQ6Om1h
a2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVj
dGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQogICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNE
ZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQogICAgICwgc3RyaW5nSGVhcENlbGxUeXBl
KHN0ZDo6bWFrZV91bmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCByb3BlU3Ry
aW5nSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNSb3BlU3RyaW5nSGVhcENlbGxUeXBl
PigpKQogICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlx
dWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCiAgICAgLCBzZWdtZW50ZWRW
YXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAt
MjYzLDcgKzI2NSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICAsIGNlbGxEYW5nZXJvdXNCaXRzU3BhY2UoIkpTQ2VsbCBEYW5nZXJvdXNCaXRzIiwgaGVh
cCwgY2VsbERhbmdlcm91c0JpdHNIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0
b3IuZ2V0KCkpCiAgICAgLCBqc1ZhbHVlR2lnYWNhZ2VDZWxsU3BhY2UoIkpTVmFsdWUgR2lnYWNh
Z2UgSlNDZWxsIiwgaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFs
dWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkKICAgICAsIGRlc3RydWN0aWJsZUNlbGxTcGFjZSgi
RGVzdHJ1Y3RpYmxlIEpTQ2VsbCIsIGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCi0gICAgLCBzdHJpbmdTcGFjZSgiSlNT
dHJpbmciLCBoZWFwLCBzdHJpbmdIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0
b3IuZ2V0KCkpCiAgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVP
YmplY3QiLCBoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RN
YWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiAgICAgLCBlYWdlcmx5U3dlcHREZXN0cnVjdGlibGVPYmpl
Y3RTcGFjZSgiRWFnZXJseSBTd2VwdCBKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAsIGRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQo
KSkKICAgICAsIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2UoIkpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3RTcGFjZSIsIGhlYXAsIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQpAQCAtMzAwLDcgKzMwMSw5IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHByb3BlcnR5VGFi
bGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBQcm9wZXJ0eVRhYmxlKQogICAgICwgcHJveHlSZXZva2VTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFBy
b3h5UmV2b2tlKQogICAgICwgcmVnRXhwQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cENvbnN0
cnVjdG9yKQorICAgICwgcm9wZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIHJv
cGVTdHJpbmdIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUm9wZVN0cmluZykKICAgICAsIHN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9u
KQorICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgc3RyaW5nSGVhcENl
bGxUeXBlLmdldCgpLCBKU1N0cmluZykKICAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
U3RydWN0dXJlUmFyZURhdGEpCiAgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUpCiAg
ICAgLCB3ZWFrU2V0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpCkBAIC0zMTQsNiArMzE3LDcgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3Bh
Y2UpCiAgICAgLCBpbmZlcnJlZFR5cGVzV2l0aEZpbmFsaXplcnMoaW5mZXJyZWRUeXBlU3BhY2Up
CiAgICAgLCBpbmZlcnJlZFZhbHVlc1dpdGhGaW5hbGl6ZXJzKGluZmVycmVkVmFsdWVTcGFjZSkK
KyAgICAsIHJvcGVTdHJpbmdzV2l0aERlc3RydWN0b3JzKHJvcGVTdHJpbmdTcGFjZSkKICAgICAs
IGV2YWxDb2RlQmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBFdmFsQ29kZUJsb2NrKQogICAgICwgZnVuY3Rpb25Db2Rl
QmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBGdW5jdGlvbkNvZGVCbG9jaykKICAgICAsIG1vZHVsZVByb2dyYW1Db2Rl
QmxvY2tTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDcgQEAgY2xhc3Mg
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKK2Ns
YXNzIEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZTsKIGNsYXNzIEpTUnVuTG9vcFRpbWVyOwogY2xh
c3MgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKIGNsYXNzIEpTU3RyaW5n
SGVhcENlbGxUeXBlOwpAQCAtMzA5LDYgKzMxMCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsRGFuZ2Vyb3VzQml0c0hlYXBDZWxsVHlwZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxKU1N0cmluZ0hlYXBDZWxsVHlwZT4gc3RyaW5nSGVhcENl
bGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGU+IHJv
cGVTdHJpbmdIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlPiBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGU+IHNl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKQEAgLTM0MSw3ICszNDMsNiBAQCBwdWJsaWM6CiAgICAgQ29tcGxldGVTdWJzcGFjZSBjZWxs
RGFuZ2Vyb3VzQml0c1NwYWNlOwogICAgIENvbXBsZXRlU3Vic3BhY2UganNWYWx1ZUdpZ2FjYWdl
Q2VsbFNwYWNlOyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIHdl
IGhhdmUgdGhpbmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMgYW5kIFNjb3BlZEFyZ3Vt
ZW50czsgdGhvc2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9PQiBjZWxscyBhbmQgSlNW
YWx1ZVN0cmljdCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mjg1OAogICAgIENvbXBsZXRlU3Vic3BhY2UgZGVzdHJ1Y3RpYmxlQ2VsbFNwYWNl
OwotICAgIENvbXBsZXRlU3Vic3BhY2Ugc3RyaW5nU3BhY2U7CiAgICAgQ29tcGxldGVTdWJzcGFj
ZSBkZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKICAgICBDb21wbGV0ZVN1YnNwYWNlIGVhZ2VybHlT
d2VwdERlc3RydWN0aWJsZU9iamVjdFNwYWNlOwogICAgIENvbXBsZXRlU3Vic3BhY2Ugc2VnbWVu
dGVkVmFyaWFibGVPYmplY3RTcGFjZTsKQEAgLTM3OSw3ICszODAsOSBAQCBwdWJsaWM6CiAgICAg
SXNvU3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHByb3h5UmV2
b2tlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgcmVnRXhwQ29uc3RydWN0b3JTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RyaW5nU3BhY2U7CiAgICAg
SXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKICAgICBJc29TdWJzcGFjZSBzdHJ1
Y3R1cmVTcGFjZTsKICAgICBJc29TdWJzcGFjZSB3ZWFrU2V0U3BhY2U7CkBAIC0zOTQsNiArMzk3
LDcgQEAgcHVibGljOgogICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNX
aXRoRmluYWxpemVyczsKICAgICBJc29DZWxsU2V0IGluZmVycmVkVHlwZXNXaXRoRmluYWxpemVy
czsKICAgICBJc29DZWxsU2V0IGluZmVycmVkVmFsdWVzV2l0aEZpbmFsaXplcnM7CisgICAgSXNv
Q2VsbFNldCByb3BlU3RyaW5nc1dpdGhEZXN0cnVjdG9yczsKICAgICAKICAgICBzdHJ1Y3QgU3Bh
Y2VBbmRGaW5hbGl6ZXJTZXQgewogICAgICAgICBJc29TdWJzcGFjZSBzcGFjZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341361</attachid>
            <date>2018-05-25 17:09:45 -0700</date>
            <delta_ts>2018-05-26 17:04:37 -0700</delta_ts>
            <desc>seems to kinda work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>57809</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDE4LTA1LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Um9wZSBzdHJpbmcgc3dlZXBpbmcgc2hvdWxkIGF2b2lkIHRvdWNoaW5nIHVucmVzb2x2ZWQgcm9w
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTk2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVzcGVj
aWFsbHkgd2hlbiByb3BlcyBhcmUgYmVpbmcgdXNlZCBpbiBhbmdlciwgYSBsb3Qgb2YgSlNSb3Bl
U3RyaW5nIG9iamVjdHMgYXJlIG5ldmVyIHJlc29sdmVkLgorICAgICAgICBUaHVzIHRoZXkgZG9u
J3QgbmVlZCBkZXN0cnVjdGlvbi4gIFNpbmNlIGRlc3RydWN0aW9uIGlzIGV4cGVuc2l2ZSwgdGhh
dCB3b3VsZCBiZSB1c2VmdWwgdG8ga25vdy4KKyAgICAgICAgCisgICAgICAgIFJvcGVzIGFyZSB1
c3VhbGx5IHVucmVzb2x2ZWQgYmVjYXVzZSBwZW9wbGUgZG8gc29tZXRoaW5nIGxpa2UgdGhpczoK
KyAgICAgICAgCisgICAgICAgIHZhciByZXN1bHQgPSAiIjsKKyAgICAgICAgZm9yICh0aGluZ3Mp
CisgICAgICAgICAgICByZXN1bHQgKz0gc3R1ZmYKKyAgICAgICAgdXNlIHJlc3VsdAorICAgICAg
ICAKKyAgICAgICAgSW4gdGhhdCBjYXNlLCB3ZSB3aWxsIGNyZWF0ZSBhIEpTUm9wZVN0cmluZyBm
b3IgZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AsIGJ1dCB3ZSB3aWxsIG9ubHkKKyAgICAgICAg
cmVzb2x2ZSB0aGUgbGFzdCBvbmUuICBUaGlzIGNvbWVzIHVwIG92ZXIgYW5kIG92ZXIgYWdhaW4u
ICBGb3IgZXhhbXBsZSwgdGhpczoKKyAgICAgICAgCisgICAgICAgICJmb28iICsgYmFyICsgImJh
eiIgKyBmdXp6ICsgImJ1enoiICsgdGhpbmd5ICsgInN0dWZmIgorICAgICAgICAKKyAgICAgICAg
d2lsbCBjcmVhdGUgdGhyZWUgSlNSb3BlU3RyaW5ncywgYnV0IG9ubHkgdGhlIGxhc3Qgb25lIHdp
bGwgZ2V0IHJlc29sdmVkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgdXNlcyBhbiBJ
c29DZWxsU2V0IHRvIHRyYWNrIHdoaWNoIEpTUm9wZVN0cmluZ3MgaGF2ZSBiZWVuIHJlc29sdmVk
LCBzbyB0aGF0IHdlIGNhbgorICAgICAgICBza2lwIGRlc3RydWN0aW5nIHRob3NlIHRoYXQgaGF2
ZW4ndCBiZWVuIHJlc29sdmVkLiBUbyBkbyB0aGF0LCB0aGlzIGNoYW5nZSBwdXRzIEpTU3RyaW5n
IGFuZAorICAgICAgICBKU1JvcGVTdHJpbmcgaW50byB0aGVpciBvd24gSXNvU3Vic3BhY2VzLgor
ICAgICAgICAKKyAgICAgICAgVGhpcyBhbHNvIHJlbW92ZXMgc29tZSB1bm5lY2Vzc2FyeSBiYXJy
aWVycyBpbiB0aGUgY29uc3RydWN0aW9uIG9mIEpTUm9wZVN0cmluZ3MuCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIGhlYXAvQXRvbUluZGljZXMuaDoKKyAgICAgICAgKEpTQzo6QXRv
bUluZGljZXM6OkF0b21JbmRpY2VzKToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQuaDoKKyAg
ICAgICAgKiBoZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Oklzb0NlbGxT
ZXQ6OmFkZCk6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnJlbW92ZSk6CisgICAgICAgIChK
U0M6Oklzb0NlbGxTZXQ6OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SXNvQ2VsbFNl
dDo6Yml0cyBjb25zdCk6CisgICAgICAgICogaGVhcC9Jc29TdWJzcGFjZS5jcHA6CisgICAgICAg
IChKU0M6Oklzb1N1YnNwYWNlOjpkaWRTd2VlcFRvRnJlZUxpc3QpOgorICAgICAgICAoSlNDOjpJ
c29TdWJzcGFjZTo6ZGlkQmVnaW5Td2VlcGluZ1RvRnJlZUxpc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGhlYXAvSXNvU3Vic3BhY2UuaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXApOgorICAgICAgICAqIGhl
YXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFz
Tm9EZXN0cnVjdG9yOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFs
aXplZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZmluaXNoU3dl
ZXBLbm93aW5nSGVhcENlbGxUeXBlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3Vic3BhY2U6OmRpZFN3ZWVwVG9GcmVlTGlzdCk6CisgICAgICAgIChKU0M6
OlN1YnNwYWNlOjpkaWRCZWdpblN3ZWVwaW5nVG9GcmVlTGlzdCk6IERlbGV0ZWQuCisgICAgICAg
ICogaGVhcC9TdWJzcGFjZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNSb3BlU3Ry
aW5nSGVhcENlbGxUeXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZ0hh
c0Rlc3RydWN0b3JGdW5jOjpKU1JvcGVTdHJpbmdIYXNEZXN0cnVjdG9yRnVuYyk6CisgICAgICAg
IChKU0M6OkpTUm9wZVN0cmluZ0hhc0Rlc3RydWN0b3JGdW5jOjpvcGVyYXRvcigpIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nRGVzdHJveUZ1bmM6Om9wZXJhdG9yKCkgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGU6OkpTUm9wZVN0cmluZ0hl
YXBDZWxsVHlwZSk6CisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZTo6fkpT
Um9wZVN0cmluZ0hlYXBDZWxsVHlwZSk6CisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZ0hlYXBD
ZWxsVHlwZTo6ZmluaXNoU3dlZXApOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmdIZWFwQ2Vs
bFR5cGU6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNSb3BlU3RyaW5nSGVhcENlbGxU
eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlVG9BdG9taWNTdHJpbmcgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlVG9FeGlzdGluZ0F0b21pY1N0cmlu
ZyBjb25zdCk6CisgICAgICAgIChKU0M6OkpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OmRpZEJlY29tZURlc3RydWN0aWJsZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmlu
Zzo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNS0yNSAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIGEgbWVtb3J5IHRlc3Qg
d2hlcmUgd2UgY2FuIHZhbGlkYXRlIEpTQ3MgbWluaSBtZW1vcnkgbW9kZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04MjcsNiArODI3LDcgQEAgcnVu
dGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNw
cAogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCiBydW50aW1lL0pTUHJveHku
Y3BwCitydW50aW1lL0pTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5jcHAKIHJ1bnRpbWUvSlNSdW5M
b29wVGltZXIuY3BwCiBydW50aW1lL0pTU2NvcGUuY3BwCiBydW50aW1lL0pTU2NyaXB0RmV0Y2hl
ci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzIyMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDYgKzM0OCw3IEBACiAJCTBGNUNGOTg5
MUU5RUQ2NTIwMEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUNGOTg3MUU5RUQ2NEUwMEMxODY5MiAv
KiBBaXJTdGFja0FsbG9jYXRpb24uaCAqLzsgfTsKIAkJMEY1RTBGRDgyMDdDNzI3MzAwOTdGMERF
IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAv
KiBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmggKi87IH07CiAJCTBGNUUwRkU3
MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyog
SXNvU3Vic3BhY2VQZXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNUU3OTBEMjBCOEMxOEIwMEI4MDlCOCAvKiBKU1JvcGVTdHJpbmdIZWFw
Q2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNUU3OTBCMjBCOEMxNDgwMEI4MDlCOCAvKiBKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuaCAq
LzsgfTsKIAkJMEY1RUY5MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3ODAw
M0U1QzI1IC8qIEpJVFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjYwRkU4RTFGRkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NjE4MzJBMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzIxMUM0NUJGMDcw
MDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLzsgfTsKQEAgLTIzNzUsNiArMjM3
Niw4IEBACiAJCTBGNUUwRkQ3MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0cmFjdEludGVycHJl
dGVyQ2xvYmJlclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJc29TdWJzcGFjZVBlclZNLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJc29T
dWJzcGFjZVBlclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElz
b1N1YnNwYWNlUGVyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFNzkw
QjIwQjhDMTQ4MDBCODA5QjggLyogSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFNzkwQzIwQjhDMTQ5MDBCODA5QjggLyogSlNS
b3BlU3RyaW5nSGVhcENlbGxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNUVGOTFCMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVGh1bmtzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5r
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRUaHVua3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MEZFOEQxRkZDMzZGQzAwMDMzMjBBIC8qIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NjQ1LDkgKzY2NDgsOSBAQAogCQkJCUUxNzg2MzNGMEQ5QkVDMDAwMEQ3NEU3
NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggKi8sCiAJCQkJRTM1RTAzNUQxQjdBQjQzRTAwNzNB
RDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8sCiAJCQkJRTM1RTAz
NUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICov
LAorCQkJCUE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLywKIAkJCQlB
N0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovLAogCQkJCUE3QThBRjJE
MTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8sCi0JCQkJQTdBOEFGMkIxN0FEQjVG
MzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovLAogCQkJCUJDOUJCOTVCMEUxOTY4MDYwMERGODg1
NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywKIAkJCQlCQzExNjY3QTBFMTk5QzA1MDA4MDY2
REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovLAogCQkJCUExQjlFMjMzMUI0RTBENjcwMEJDN0ZF
RCAvKiBJbnRsQ29sbGF0b3IuY3BwICovLApAQCAtNjc1Nyw5ICs2NzYwLDkgQEAKIAkJCQk3OUI4
MTk5MjFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9iYWxPYmplY3RJbmxpbmVzLmggKi8sCiAJCQkJ
NTNGMTFGNDIyMDkxNzQ5ODAwRTQxMUE3IC8qIEpTSW1tdXRhYmxlQnV0dGVyZmx5LmNwcCAqLywK
IAkJCQk1M0YxMUY0MDIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCAq
LywKKwkJCQkwRjJCNjZDOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQ4QXJyYXkuaCAqLywKIAkJ
CQkwRjJCNjZDQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQxNkFycmF5LmggKi8sCiAJCQkJMEYy
QjY2Q0IxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MzJBcnJheS5oICovLAotCQkJCTBGMkI2NkM5
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDhBcnJheS5oICovLAogCQkJCUUzM0Y1MDdFMUI4NDI5
QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5jcHAgKi8sCiAJCQkJRTMzRjUwN0YxQjg0
MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggKi8sCiAJCQkJRTMzRjUwNzYxQjg0
MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwICovLApAQCAt
NjgwNSw2ICs2ODA4LDggQEAKIAkJCQkyQTA1QUJENDE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmggKi8sCiAJCQkJODYyNTUzQ0UxNjEzNkFBNTAwOUYxN0QwIC8q
IEpTUHJveHkuY3BwICovLAogCQkJCTg2MjU1M0NGMTYxMzZBQTUwMDlGMTdEMCAvKiBKU1Byb3h5
LmggKi8sCisJCQkJMEY1RTc5MEMyMEI4QzE0OTAwQjgwOUI4IC8qIEpTUm9wZVN0cmluZ0hlYXBD
ZWxsVHlwZS5jcHAgKi8sCisJCQkJMEY1RTc5MEIyMEI4QzE0ODAwQjgwOUI4IC8qIEpTUm9wZVN0
cmluZ0hlYXBDZWxsVHlwZS5oICovLAogCQkJCTUzNDYzODcyMUU3MEQwMTUwMEYxMkFDMSAvKiBK
U1J1bkxvb3BUaW1lci5jcHAgKi8sCiAJCQkJNTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8qIEpT
UnVuTG9vcFRpbWVyLmggKi8sCiAJCQkJMTQ4NzRBRTExNUVCREU0QTAwMkUzNTg3IC8qIEpTU2Nv
cGUuY3BwICovLApAQCAtNjg0OCwxMCArNjg1MywxMCBAQAogCQkJCTUzRjI1NkUxMUI4N0UyODAw
MEI0Qjc2OCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCAqLywKIAkJCQk1MzkxN0U3
QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovLAogCQkJ
CTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggKi8sCi0JCQkJMEYyQjY2
RDQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDE2QXJyYXkuaCAqLywKLQkJCQkwRjJCNjZENTE3
QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MzJBcnJheS5oICovLAogCQkJCTBGMkI2NkQyMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1VpbnQ4QXJyYXkuaCAqLywKIAkJCQkwRjJCNjZEMzE3QjZCNUFCMDBB
N0FFM0YgLyogSlNVaW50OENsYW1wZWRBcnJheS5oICovLAorCQkJCTBGMkI2NkQ0MTdCNkI1QUIw
MEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggKi8sCisJCQkJMEYyQjY2RDUxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTVWludDMyQXJyYXkuaCAqLywKIAkJCQlBN0NBM0FFMTE3REE0MUFFMDA2NTM4QUYg
LyogSlNXZWFrTWFwLmNwcCAqLywKIAkJCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNX
ZWFrTWFwLmggKi8sCiAJCQkJNzA5RkI4NjExQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5j
cHAgKi8sCkBAIC03MDYwLDExICs3MDY1LDExIEBACiAJCQkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0
QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oICovLAogCQkJCTBGMkQ0REUzMTk4MzJEOTEwMDdENEIx
OSAvKiBUeXBlU2V0LmNwcCAqLywKIAkJCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyogVHlw
ZVNldC5oICovLAorCQkJCUE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5Lmgg
Ki8sCisJCQkJQTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5Lmgg
Ki8sCiAJCQkJQTdBOEFGMzIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggKi8sCiAJ
CQkJODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovLAog
CQkJCUE3QThBRjMzMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5oICovLAotCQkJCUE3
QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggKi8sCi0JCQkJQTdBOEFGMzEx
N0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi8sCiAJCQkJMEZFMDUwMjMx
QUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgKi8sCiAJCQkJMEZFMDUwMjQxQUE5MDk1
NjAwRDMzQjMzIC8qIFZhck9mZnNldC5oICovLAogCQkJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIz
NCAvKiBWTS5jcHAgKi8sCkBAIC04NzA4LDYgKzg3MTMsNyBAQAogCQkJCTBGRDhBMzJBMTdENTFG
NTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZEOEEzMkMxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NS
RW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RTcyMTFFMTkzQjlDNTkwMDMxRjZFRCAvKiBERkdUcmFuc2l0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjVFNzkwRDIwQjhDMThCMDBCODA5QjggLyogSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1RjE5MDA2QTU5N0MgLyogREZHVHlw
ZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRTBGNzcxNkMxREIx
MjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MzRCMTRBMTZENDIwMTMwMDFDREE1QSAvKiBERkdVc2VLaW5kLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0F0b21JbmRpY2VzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQXRvbUluZGljZXMuaAkocmV2aXNpb24gMjMy
MjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQXRvbUluZGljZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBBdG9tSW5k
aWNlcyB7CiAgICAgQXRvbUluZGljZXMoKSB7IH0KICAgICAKLSAgICBBdG9tSW5kaWNlcyhIZWFw
Q2VsbCogY2VsbCkKKyAgICBBdG9tSW5kaWNlcyhjb25zdCBIZWFwQ2VsbCogY2VsbCkKICAgICAg
ICAgOiBibG9jayhNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCkpCiAgICAgICAgICwgYmxvY2tJ
bmRleChibG9jay0+aGFuZGxlKCkuaW5kZXgoKSkKICAgICAgICAgLCBhdG9tTnVtYmVyKGJsb2Nr
LT5hdG9tTnVtYmVyKGNlbGwpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
Q2VsbFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXQuaAkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsMTQgQEAgcHVibGljOgog
ICAgIElzb0NlbGxTZXQoSXNvU3Vic3BhY2UmIHN1YnNwYWNlKTsKICAgICB+SXNvQ2VsbFNldCgp
OwogICAgIAotICAgIGJvb2wgYWRkKEhlYXBDZWxsKiBjZWxsKTsgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBjZWxsIHdhcyBuZXdseSBhZGRlZC4KKyAgICBib29sIGFkZChjb25zdCBIZWFwQ2VsbCop
OyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNlbGwgd2FzIG5ld2x5IGFkZGVkLgogICAgIAotICAg
IGJvb2wgcmVtb3ZlKEhlYXBDZWxsKiBjZWxsKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjZWxs
IHdhcyBwcmV2aW91c2x5IHByZXNlbnQgYW5kIGdvdCByZW1vdmVkLgorICAgIGJvb2wgcmVtb3Zl
KGNvbnN0IEhlYXBDZWxsKik7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2VsbCB3YXMgcHJldmlv
dXNseSBwcmVzZW50IGFuZCBnb3QgcmVtb3ZlZC4KICAgICAKLSAgICBib29sIGNvbnRhaW5zKEhl
YXBDZWxsKiBjZWxsKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IEhlYXBDZWxsKikg
Y29uc3Q7CisgICAgCisgICAgYm9vbCBjb250YWlucyhNYXJrZWRCbG9jazo6SGFuZGxlKikgY29u
c3Q7CisgICAgQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPiogYml0cyhNYXJrZWRC
bG9jazo6SGFuZGxlKikgY29uc3Q7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRy
PFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJr
ZWRCbG9ja1NvdXJjZSgpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgYm9vbCBJc29DZWxsU2V0
OjphZGQoSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9vbCBJc29DZWxsU2V0OjphZGQoY29uc3Qg
SGVhcENlbGwqIGNlbGwpCiB7CiAgICAgQXRvbUluZGljZXMgYXRvbUluZGljZXMoY2VsbCk7CiAg
ICAgYXV0byYgYml0c1B0clJlZiA9IG1fYml0c1thdG9tSW5kaWNlcy5ibG9ja0luZGV4XTsKQEAg
LTQxLDcgKzQxLDcgQEAgaW5saW5lIGJvb2wgSXNvQ2VsbFNldDo6YWRkKEhlYXBDZWxsKiBjZQog
ICAgIHJldHVybiAhYml0cy0+Y29uY3VycmVudFRlc3RBbmRTZXQoYXRvbUluZGljZXMuYXRvbU51
bWJlcik7CiB9CiAKLWlubGluZSBib29sIElzb0NlbGxTZXQ6OnJlbW92ZShIZWFwQ2VsbCogY2Vs
bCkKK2lubGluZSBib29sIElzb0NlbGxTZXQ6OnJlbW92ZShjb25zdCBIZWFwQ2VsbCogY2VsbCkK
IHsKICAgICBBdG9tSW5kaWNlcyBhdG9tSW5kaWNlcyhjZWxsKTsKICAgICBhdXRvJiBiaXRzUHRy
UmVmID0gbV9iaXRzW2F0b21JbmRpY2VzLmJsb2NrSW5kZXhdOwpAQCAtNTEsNyArNTEsNyBAQCBp
bmxpbmUgYm9vbCBJc29DZWxsU2V0OjpyZW1vdmUoSGVhcENlbGwqCiAgICAgcmV0dXJuIGJpdHMt
PmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoYXRvbUluZGljZXMuYXRvbU51bWJlcik7CiB9CiAKLWlu
bGluZSBib29sIElzb0NlbGxTZXQ6OmNvbnRhaW5zKEhlYXBDZWxsKiBjZWxsKSBjb25zdAoraW5s
aW5lIGJvb2wgSXNvQ2VsbFNldDo6Y29udGFpbnMoY29uc3QgSGVhcENlbGwqIGNlbGwpIGNvbnN0
CiB7CiAgICAgQXRvbUluZGljZXMgYXRvbUluZGljZXMoY2VsbCk7CiAgICAgYXV0byogYml0cyA9
IG1fYml0c1thdG9tSW5kaWNlcy5ibG9ja0luZGV4XS5nZXQoKTsKQEAgLTYwLDYgKzYwLDE2IEBA
IGlubGluZSBib29sIElzb0NlbGxTZXQ6OmNvbnRhaW5zKEhlYXBDZWwKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK2lubGluZSBib29sIElzb0NlbGxTZXQ6OmNvbnRhaW5zKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGhhbmRsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ibG9ja3NXaXRoQml0c1toYW5k
bGUtPmluZGV4KCldOworfQorCitpbmxpbmUgQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJs
b2NrPiogSXNvQ2VsbFNldDo6Yml0cyhNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fYml0c1toYW5kbGUtPmluZGV4KCldLmdldCgpOworfQorCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChj
b25zdCBGdW5jJiBmdW5jKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmNwcAkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgSXNvU3Vic3BhY2U6OmRpZFJlbW92ZUJsb2NrKHNpemVfdCAKICAgICAgICAgfSk7CiB9CiAK
LXZvaWQgSXNvU3Vic3BhY2U6OmRpZEJlZ2luU3dlZXBpbmdUb0ZyZWVMaXN0KE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrKQordm9pZCBJc29TdWJzcGFjZTo6ZGlkU3dlZXBUb0ZyZWVMaXN0KE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewogICAgIG1fY2VsbFNldHMuZm9yRWFjaCgKICAg
ICAgICAgWyZdIChJc29DZWxsU2V0KiBzZXQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb1N1YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuaAkocmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgZGlkUmVzaXplQml0cyhzaXplX3QgbmV3U2l6ZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZW1vdmVCbG9jayhzaXplX3QgYmxvY2tJbmRleCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRCZWdpblN3ZWVwaW5nVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6
SGFuZGxlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTd2VlcFRvRnJlZUxpc3QoTWFya2VkQmxv
Y2s6OkhhbmRsZSopIG92ZXJyaWRlOwogICAgIAogICAgIHNpemVfdCBtX3NpemU7CiAgICAgQmxv
Y2tEaXJlY3RvcnkgbV9kaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Nyw0NCArMzk3
LDE1IEBAIFN1YnNwYWNlKiBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdWJzcGFjZSgKICAgICByZXR1
cm4gZGlyZWN0b3J5KCktPnN1YnNwYWNlKCk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3dlZXAoRnJlZUxpc3QqIGZyZWVMaXN0KQordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpm
aW5pc2hTd2VlcFdpdGhOb0Rlc3RydWN0b3JzKEZyZWVMaXN0KiBmcmVlTGlzdCkKIHsKLSAgICBT
d2VlcGluZ1Njb3BlIHN3ZWVwaW5nU2NvcGUoKmhlYXAoKSk7CisgICAgLy8gSGFuZGxlIHRoZSBu
by1kZXN0cnVjdG9yIHNwZWNpYWxpemF0aW9ucyBoZXJlLCBzaW5jZSB3ZSBoYXZlIHRoZSBtb3N0
IG9mIHRob3NlLiBUaGlzCisgICAgLy8gZW5zdXJlcyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IHJlLXNw
ZWNpYWxpemVkIGZvciBldmVyeSBkZXN0cnVjdG9yIHNwYWNlLgogICAgIAogICAgIFN3ZWVwTW9k
ZSBzd2VlcE1vZGUgPSBmcmVlTGlzdCA/IFN3ZWVwVG9GcmVlTGlzdCA6IFN3ZWVwT25seTsKICAg
ICAKLSAgICBtX2RpcmVjdG9yeS0+c2V0SXNVbnN3ZXB0KE5vTG9ja2luZ05lY2Vzc2FyeSwgdGhp
cywgZmFsc2UpOwotICAgIAotICAgIG1fd2Vha1NldC5zd2VlcCgpOwotICAgIAotICAgIGJvb2wg
bmVlZHNEZXN0cnVjdGlvbiA9IG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3Ry
dWN0aW9uCi0gICAgICAgICYmIG1fZGlyZWN0b3J5LT5pc0Rlc3RydWN0aWJsZShOb0xvY2tpbmdO
ZWNlc3NhcnksIHRoaXMpOwotCi0gICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkgJiYgIW5l
ZWRzRGVzdHJ1Y3Rpb24pCisgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpCiAgICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtX2lzRnJlZUxpc3RlZCkgewotICAgICAgICBkYXRhTG9nKCJG
QVRBTDogIiwgUmF3UG9pbnRlcih0aGlzKSwgIi0+c3dlZXA6IGJsb2NrIGlzIGZyZWUtbGlzdGVk
LlxuIik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAg
IAotICAgIGlmIChpc0FsbG9jYXRlZCgpKSB7Ci0gICAgICAgIGRhdGFMb2coIkZBVEFMOiAiLCBS
YXdQb2ludGVyKHRoaXMpLCAiLT5zd2VlcDogYmxvY2sgaXMgYWxsb2NhdGVkLlxuIik7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIAotICAgIGlmIChz
cGFjZSgpLT5pc01hcmtpbmcoKSkKLSAgICAgICAgYmxvY2tGb290ZXIoKS5tX2xvY2subG9jaygp
OwotICAgIAotICAgIHN1YnNwYWNlKCktPmRpZEJlZ2luU3dlZXBpbmdUb0ZyZWVMaXN0KHRoaXMp
OwotICAgIAotICAgIGlmIChuZWVkc0Rlc3RydWN0aW9uKSB7Ci0gICAgICAgIHN1YnNwYWNlKCkt
PmZpbmlzaFN3ZWVwKCp0aGlzLCBmcmVlTGlzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgLy8gSGFuZGxlIHRoZSBuby1kZXN0cnVjdG9yIHNwZWNpYWxpemF0aW9ucyBoZXJl
LCBzaW5jZSB3ZSBoYXZlIHRoZSBtb3N0IG9mIHRob3NlLiBUaGlzCi0gICAgLy8gZW5zdXJlcyB0
aGF0IHRoZXkgZG9uJ3QgZ2V0IHJlLXNwZWNpYWxpemVkIGZvciBldmVyeSBkZXN0cnVjdG9yIHNw
YWNlLgogICAgIAogICAgIEVtcHR5TW9kZSBlbXB0eU1vZGUgPSB0aGlzLT5lbXB0eU1vZGUoKTsK
ICAgICBTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlID0gdGhpcy0+c2NyaWJibGVNb2RlKCk7CkBA
IC00NTMsMjAgKzQyNCwyMCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKEZyZWVM
aXN0CiAgICAgICAgIGNhc2UgSXNFbXB0eToKICAgICAgICAgICAgIHN3aXRjaCAobWFya3NNb2Rl
KSB7CiAgICAgICAgICAgICBjYXNlIE1hcmtzTm90U3RhbGU6Ci0gICAgICAgICAgICAgICAgc3Bl
Y2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9E
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJr
c05vdFN0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05v
RGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFy
a3NOb3RTdGFsZSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKKyAgICAgICAgICAgICAgICBzcGVj
aWFsaXplZFN3ZWVwPHRydWUsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNOb0Rl
c3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtz
Tm90U3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9E
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJr
c05vdFN0YWxlLCBIYXNOb0Rlc3RydWN0b3IoKSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGNhc2UgTWFya3NTdGFsZToK
LSAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIElzRW1wdHksIFN3ZWVwVG9G
cmVlTGlzdCwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZl
TmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcFRvRnJl
ZUxpc3QsIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5l
d2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlLCBbXSAoVk0mLCBKU0NlbGwqKSB7IH0pOworICAgICAg
ICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0
LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFs
bG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwg
QmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxv
Y2F0ZWQsIE1hcmtzU3RhbGUsIEhhc05vRGVzdHJ1Y3RvcigpLCBbXSAoVk0mLCBKU0NlbGwqKSB7
IH0pOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm90RW1wdHk6CiAgICAgICAgICAgICBzd2l0Y2gg
KG1hcmtzTW9kZSkgewogICAgICAgICAgICAgY2FzZSBNYXJrc05vdFN0YWxlOgotICAgICAgICAg
ICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwg
QmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxv
Y2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3Qs
IEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxs
b2NhdGVkLCBNYXJrc05vdFN0YWxlLCBbXSAoVk0mLCBKU0NlbGwqKSB7IH0pOworICAgICAgICAg
ICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwg
QmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxv
Y2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3Qs
IEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxs
b2NhdGVkLCBNYXJrc05vdFN0YWxlLCBIYXNOb0Rlc3RydWN0b3IoKSwgW10gKFZNJiwgSlNDZWxs
KikgeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGNhc2Ug
TWFya3NTdGFsZToKLSAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIE5vdEVt
cHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxl
LCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0
eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwg
RG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZSwgW10gKFZNJiwgSlNDZWxsKikg
eyB9KTsKKyAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBT
d2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dl
ZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05v
dEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZSwgSGFzTm9EZXN0cnVjdG9yKCksIFtdIChW
TSYsIEpTQ2VsbCopIHsgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ3NSwxMSArNDQ2LDQ4IEBAIHZvaWQgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3dlZXAoRnJlZUxpc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH07CiAgICAgCi0gICAgaWYgKHRyeVNwZWNpYWxpemVkKCkpCisgICAgaWYgKCF0cnlTcGVj
aWFsaXplZCgpKSB7CisgICAgICAgIC8vIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMgZG9uJ3QgbWF0
dGVyIGJlY2F1c2UgdGhlIGZpcnN0IG9uZSBpcyBmYWxzZS4KKyAgICAgICAgc3BlY2lhbGl6ZWRT
d2VlcDxmYWxzZSwgSXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERv
bnRTY3JpYmJsZSwgSGFzTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBlbXB0
eU1vZGUsIHN3ZWVwTW9kZSwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBzY3JpYmJsZU1vZGUsIG5l
d2x5QWxsb2NhdGVkTW9kZSwgbWFya3NNb2RlLCBIYXNOb0Rlc3RydWN0b3IoKSwgW10gKFZNJiwg
SlNDZWxsKikgeyB9KTsKKyAgICB9Cit9CisKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXAoRnJlZUxpc3QqIGZyZWVMaXN0KQoreworICAgIFN3ZWVwaW5nU2NvcGUgc3dlZXBpbmdTY29w
ZSgqaGVhcCgpKTsKKyAgICAKKyAgICBTd2VlcE1vZGUgc3dlZXBNb2RlID0gZnJlZUxpc3QgPyBT
d2VlcFRvRnJlZUxpc3QgOiBTd2VlcE9ubHk7CisgICAgCisgICAgbV9kaXJlY3RvcnktPnNldElz
VW5zd2VwdChOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMsIGZhbHNlKTsKKyAgICAKKyAgICBtX3dl
YWtTZXQuc3dlZXAoKTsKKyAgICAKKyAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBtX2F0dHJp
YnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbgorICAgICAgICAmJiBtX2RpcmVj
dG9yeS0+aXNEZXN0cnVjdGlibGUoTm9Mb2NraW5nTmVjZXNzYXJ5LCB0aGlzKTsKKworICAgIGlm
IChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmICFuZWVkc0Rlc3RydWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBUaGUgdGVtcGxhdGUgYXJndW1lbnRzIGRvbid0IG1hdHRlciBiZWNh
dXNlIHRoZSBmaXJzdCBvbmUgaXMgZmFsc2UuCi0gICAgc3BlY2lhbGl6ZWRTd2VlcDxmYWxzZSwg
SXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwg
SGFzTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBlbXB0eU1vZGUsIHN3ZWVw
TW9kZSwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2NhdGVk
TW9kZSwgbWFya3NNb2RlLCBbXSAoVk0mLCBKU0NlbGwqKSB7IH0pOworICAgIGlmIChtX2lzRnJl
ZUxpc3RlZCkgeworICAgICAgICBkYXRhTG9nKCJGQVRBTDogIiwgUmF3UG9pbnRlcih0aGlzKSwg
Ii0+c3dlZXA6IGJsb2NrIGlzIGZyZWUtbGlzdGVkLlxuIik7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIGlmIChpc0FsbG9jYXRlZCgpKSB7
CisgICAgICAgIGRhdGFMb2coIkZBVEFMOiAiLCBSYXdQb2ludGVyKHRoaXMpLCAiLT5zd2VlcDog
YmxvY2sgaXMgYWxsb2NhdGVkLlxuIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorICAgIAorICAgIGlmIChzcGFjZSgpLT5pc01hcmtpbmcoKSkKKyAgICAg
ICAgYmxvY2tGb290ZXIoKS5tX2xvY2subG9jaygpOworICAgIAorICAgIGlmIChzd2VlcE1vZGUg
PT0gU3dlZXBUb0ZyZWVMaXN0KQorICAgICAgICBzdWJzcGFjZSgpLT5kaWRTd2VlcFRvRnJlZUxp
c3QodGhpcyk7CisgICAgCisgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24pCisgICAgICAgIHN1YnNw
YWNlKCktPmZpbmlzaFN3ZWVwKCp0aGlzLCBmcmVlTGlzdCk7CisgICAgZWxzZQorICAgICAgICBm
aW5pc2hTd2VlcFdpdGhOb0Rlc3RydWN0b3JzKGZyZWVMaXN0KTsKIH0KIAogYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjppc0ZyZWVMaXN0ZWRDZWxsKGNvbnN0IHZvaWQqIHRhcmdldCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24g
MjMyMjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMTMzLDEwICsxMzMsMjIgQEAgcHVibGljOgogICAgICAgICAvLyBtaXN0
YWtlIG9mIG1ha2luZyBhIHBvcCBmcmVlbGlzdCByYXRoZXIgdGhhbiBhIGJ1bXAgZnJlZWxpc3Qu
CiAgICAgICAgIHZvaWQgc3dlZXAoRnJlZUxpc3QqKTsKICAgICAgICAgCi0gICAgICAgIC8vIFRo
aXMgaXMgdG8gYmUgY2FsbGVkIGJ5IFN1YnNwYWNlLgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZXN0cm95RnVuYz4KICAgICAgICAgdm9pZCBmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5
cGUoRnJlZUxpc3QqLCBjb25zdCBEZXN0cm95RnVuYyYpOwogICAgICAgICAKKyAgICAgICAgc3Ry
dWN0IEhhc05vRGVzdHJ1Y3RvciB7CisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3Bl
cmF0b3IoKShzaXplX3QpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIH07CisgICAg
ICAgIAorICAgICAgICBzdHJ1Y3QgQWx3YXlzSGFzRGVzdHJ1Y3RvciB7CisgICAgICAgICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3IoKShzaXplX3QpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc0Rl
c3RydWN0b3JGdW5jLCB0eXBlbmFtZSBEZXN0cm95RnVuYz4KKyAgICAgICAgdm9pZCBmaW5pc2hT
d2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoRnJlZUxpc3QqLCBjb25zdCBIYXNEZXN0cnVjdG9yRnVu
YyYsIGNvbnN0IERlc3Ryb3lGdW5jJik7CisgICAgICAgIAorICAgICAgICB2b2lkIGZpbmlzaFN3
ZWVwV2l0aE5vRGVzdHJ1Y3RvcnMoRnJlZUxpc3QqKTsKKwogICAgICAgICB2b2lkIHVuc3dlZXBX
aXRoTm9OZXdseUFsbG9jYXRlZCgpOwogICAgICAgICAKICAgICAgICAgdm9pZCB6YXAoY29uc3Qg
RnJlZUxpc3QmKTsKQEAgLTIwOSw4ICsyMjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIE5ld2x5QWxs
b2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUoKTsKICAgICAgICAgTWFya3NNb2RlIG1hcmtz
TW9kZSgpOwogICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCwgRW1wdHlNb2RlLCBTd2Vl
cE1vZGUsIFN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVk
TW9kZSwgTWFya3NNb2RlLCB0eXBlbmFtZSBEZXN0cm95RnVuYz4KLSAgICAgICAgdm9pZCBzcGVj
aWFsaXplZFN3ZWVwKEZyZWVMaXN0KiwgRW1wdHlNb2RlLCBTd2VlcE1vZGUsIFN3ZWVwRGVzdHJ1
Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya3NNb2RlLCBj
b25zdCBEZXN0cm95RnVuYyYpOworICAgICAgICB0ZW1wbGF0ZTxib29sLCBFbXB0eU1vZGUsIFN3
ZWVwTW9kZSwgU3dlZXBEZXN0cnVjdGlvbk1vZGUsIFNjcmliYmxlTW9kZSwgTmV3bHlBbGxvY2F0
ZWRNb2RlLCBNYXJrc01vZGUsIHR5cGVuYW1lIEhhc0Rlc3RydWN0b3JGdW5jLCB0eXBlbmFtZSBE
ZXN0cm95RnVuYz4KKyAgICAgICAgdm9pZCBzcGVjaWFsaXplZFN3ZWVwKEZyZWVMaXN0KiwgRW1w
dHlNb2RlLCBTd2VlcE1vZGUsIFN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5l
d2x5QWxsb2NhdGVkTW9kZSwgTWFya3NNb2RlLCBjb25zdCBIYXNEZXN0cnVjdG9yRnVuYyYsIGNv
bnN0IERlc3Ryb3lGdW5jJik7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldElzRnJlZUxpc3Rl
ZCgpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDgg
KzIyNCw4IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUMKIC8vCiAv
LyBPbmx5IHRoZSBEb2VzTm90TmVlZERlc3RydWN0aW9uIG9uZSBzaG91bGQgYmUgc3BlY2lhbGl6
ZWQgYnkgTWFya2VkQmxvY2suCiAKLXRlbXBsYXRlPGJvb2wgc3BlY2lhbGl6ZSwgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6RW1wdHlNb2RlIHNwZWNpYWxpemVkRW1wdHlNb2RlLCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpTd2VlcE1vZGUgc3BlY2lhbGl6ZWRTd2VlcE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIHNwZWNpYWxpemVkRGVzdHJ1Y3Rpb25Nb2RlLCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc3BlY2lhbGl6ZWRTY3JpYmJsZU1vZGUsIE1h
cmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBzcGVjaWFsaXplZE5ld2x5QWxs
b2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TWFya3NNb2RlIHNwZWNpYWxpemVkTWFy
a3NNb2RlLCB0eXBlbmFtZSBEZXN0cm95RnVuYz4KLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3BlY2lhbGl6ZWRTd2VlcChGcmVlTGlzdCogZnJlZUxpc3QsIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2Vl
cE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0
aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwg
TWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9k
ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TWFya3NNb2RlIG1hcmtzTW9kZSwgY29uc3QgRGVzdHJv
eUZ1bmMmIGRlc3Ryb3lGdW5jKQordGVtcGxhdGU8Ym9vbCBzcGVjaWFsaXplLCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpFbXB0eU1vZGUgc3BlY2lhbGl6ZWRFbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OlN3ZWVwTW9kZSBzcGVjaWFsaXplZFN3ZWVwTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6U3dlZXBEZXN0cnVjdGlvbk1vZGUgc3BlY2lhbGl6ZWREZXN0cnVjdGlvbk1vZGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzcGVjaWFsaXplZFNjcmliYmxlTW9kZSwgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxvY2F0ZWRNb2RlIHNwZWNpYWxpemVkTmV3bHlBbGxv
Y2F0ZWRNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpNYXJrc01vZGUgc3BlY2lhbGl6ZWRNYXJr
c01vZGUsIHR5cGVuYW1lIEhhc0Rlc3RydWN0b3JGdW5jLCB0eXBlbmFtZSBEZXN0cm95RnVuYz4K
K3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcChGcmVlTGlzdCogZnJl
ZUxpc3QsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3
ZWVwRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6
U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlBbGxv
Y2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TWFya3NN
b2RlIG1hcmtzTW9kZSwgY29uc3QgSGFzRGVzdHJ1Y3RvckZ1bmMmIGhhc0Rlc3RydWN0b3IsIGNv
bnN0IERlc3Ryb3lGdW5jJiBkZXN0cm95RnVuYykKIHsKICAgICBpZiAoc3BlY2lhbGl6ZSkgewog
ICAgICAgICBlbXB0eU1vZGUgPSBzcGVjaWFsaXplZEVtcHR5TW9kZTsKQEAgLTI1OSw2ICsyNTks
OSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlCiAgICAgCiAgICAg
bV9kaXJlY3RvcnktPnNldElzRGVzdHJ1Y3RpYmxlKE5vTG9ja2luZ05lY2Vzc2FyeSwgdGhpcywg
ZmFsc2UpOwogICAgIAorICAgIHVuc2lnbmVkIGVuZEF0b20gPSBtX2VuZEF0b207CisgICAgdW5z
aWduZWQgYXRvbXNQZXJDZWxsID0gbV9hdG9tc1BlckNlbGw7CisKICAgICBpZiAoT3B0aW9uczo6
dXNlQnVtcEFsbG9jYXRvcigpCiAgICAgICAgICYmIGVtcHR5TW9kZSA9PSBJc0VtcHR5CiAgICAg
ICAgICYmIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkKSB7
CkBAIC0yNzUsOSArMjc4LDE0IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6
ZWRTd2UKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Y2hhciogc3RhcnRPZkxhc3RDZWxsID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9j
ay5hdG9tcygpICsgbV9lbmRBdG9tIC0gMSkpOworICAgICAgICBjaGFyKiBzdGFydE9mTGFzdENl
bGwgPSBzdGF0aWNfY2FzdDxjaGFyKj4oY2VsbEFsaWduKGJsb2NrLmF0b21zKCkgKyBlbmRBdG9t
IC0gMSkpOwogICAgICAgICBjaGFyKiBwYXlsb2FkRW5kID0gc3RhcnRPZkxhc3RDZWxsICsgY2Vs
bFNpemU7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHBheWxvYWRFbmQgLSBNYXJrZWRCbG9jazo6
YmxvY2tTaXplIDw9IGJpdHdpc2VfY2FzdDxjaGFyKj4oJmJsb2NrKSk7CisgICAgICAgIGlmIChw
YXlsb2FkRW5kIC0gTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSA+IGJpdHdpc2VfY2FzdDxjaGFyKj4o
JmJsb2NrKSkgeworICAgICAgICAgICAgZGF0YUxvZygicGF5bG9hZEVuZCA9ICIsIFJhd1BvaW50
ZXIocGF5bG9hZEVuZCksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiJmJsb2NrID0gIiwg
UmF3UG9pbnRlcigmYmxvY2spLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coInBheWxvYWRF
bmQgLSBibG9ja1NpemUgPSAiLCBSYXdQb2ludGVyKHBheWxvYWRFbmQgLSBNYXJrZWRCbG9jazo6
YmxvY2tTaXplKSwgIlxuIik7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CiAgICAgICAgIGNoYXIqIHBheWxvYWRCZWdpbiA9IGJpdHdpc2VfY2Fz
dDxjaGFyKj4oYmxvY2suYXRvbXMoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCkKQEAgLTI4NSw4ICsyOTMsMTEgQEAgdm9pZCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZQogICAgICAgICBpZiAoc3BhY2UoKS0+aXNNYXJraW5n
KCkpCiAgICAgICAgICAgICBmb290ZXIubV9sb2NrLnVubG9jaygpOwogICAgICAgICBpZiAoZGVz
dHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFzTm9EZXN0cnVjdG9ycykgewotICAgICAgICAgICAgZm9y
IChjaGFyKiBjZWxsID0gcGF5bG9hZEJlZ2luOyBjZWxsIDwgcGF5bG9hZEVuZDsgY2VsbCArPSBj
ZWxsU2l6ZSkKLSAgICAgICAgICAgICAgICBkZXN0cm95KGNlbGwpOworICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBlbmRBdG9tOyBpICs9IGF0b21zUGVyQ2VsbCkgeworICAgICAg
ICAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwq
PigmYmxvY2suYXRvbXMoKVtpXSk7CisgICAgICAgICAgICAgICAgaWYgKGhhc0Rlc3RydWN0b3Io
aSkpCisgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3koY2VsbCk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKICAg
ICAgICAgICAgIGlmIChzY3JpYmJsZU1vZGUgPT0gU2NyaWJibGUpCkBAIC0zMTAsNyArMzIxLDcg
QEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZQogICAgIGF1dG8gaGFu
ZGxlRGVhZENlbGwgPSBbJl0gKHNpemVfdCBpKSB7CiAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYmxvY2suYXRvbXMoKVtpXSk7CiAKLSAg
ICAgICAgaWYgKGRlc3RydWN0aW9uTW9kZSAhPSBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMpCisgICAg
ICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgIT0gQmxvY2tIYXNOb0Rlc3RydWN0b3JzICYmIGhhc0Rl
c3RydWN0b3IoaSkpCiAgICAgICAgICAgICBkZXN0cm95KGNlbGwpOwogCiAgICAgICAgIGlmIChz
d2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CkBAIC0zMjIsNyArMzMzLDcgQEAgdm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZQogICAgICAgICAgICAgKytjb3VudDsK
ICAgICAgICAgfQogICAgIH07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VuZEF0b207
IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVuZEF0
b207IGkgKz0gYXRvbXNQZXJDZWxsKSB7CiAgICAgICAgIGlmIChlbXB0eU1vZGUgPT0gTm90RW1w
dHkKICAgICAgICAgICAgICYmICgobWFya3NNb2RlID09IE1hcmtzTm90U3RhbGUgJiYgZm9vdGVy
Lm1fbWFya3MuZ2V0KGkpKQogICAgICAgICAgICAgICAgIHx8IChuZXdseUFsbG9jYXRlZE1vZGUg
PT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYgZm9vdGVyLm1fbmV3bHlBbGxvY2F0ZWQuZ2V0KGkpKSkp
IHsKQEAgLTM1OCw4ICszNjksOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxp
emVkU3dlCiAgICAgICAgIGRhdGFMb2coIlNsb3dseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVy
KCZibG9jayksICIgd2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUsICIgYW5kIGF0dHJpYnV0ZXMg
IiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCBwb2ludGVyRHVtcChmcmVlTGlzdCksICJcbiIpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBEZXN0cm95RnVuYz4KLXZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6ZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKEZyZWVMaXN0KiBmcmVlTGlzdCwgY29u
c3QgRGVzdHJveUZ1bmMmIGRlc3Ryb3lGdW5jKQordGVtcGxhdGU8dHlwZW5hbWUgSGFzRGVzdHJ1
Y3RvckZ1bmMsIHR5cGVuYW1lIERlc3Ryb3lGdW5jPgordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoRnJlZUxpc3QqIGZyZWVMaXN0LCBjb25z
dCBIYXNEZXN0cnVjdG9yRnVuYyYgaGFzRGVzdHJ1Y3RvciwgY29uc3QgRGVzdHJveUZ1bmMmIGRl
c3Ryb3lGdW5jKQogewogICAgIFN3ZWVwTW9kZSBzd2VlcE1vZGUgPSBmcmVlTGlzdCA/IFN3ZWVw
VG9GcmVlTGlzdCA6IFN3ZWVwT25seTsKICAgICBTd2VlcERlc3RydWN0aW9uTW9kZSBkZXN0cnVj
dGlvbk1vZGUgPSB0aGlzLT5zd2VlcERlc3RydWN0aW9uTW9kZSgpOwpAQCAtMzgyLDIwICszOTMs
MjAgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmaW5pc2hTd2VlcEtubwogICAgICAgICAg
ICAgY2FzZSBTd2VlcE9ubHk6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXJrc01vZGUpIHsK
ICAgICAgICAgICAgICAgICBjYXNlIE1hcmtzTm90U3RhbGU6Ci0gICAgICAgICAgICAgICAgICAg
IHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3Ry
dWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90
U3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1Y3RvcnMs
IERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZSwg
ZGVzdHJveUZ1bmMpOworICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUs
IElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBE
b2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwgSXNFbXB0
eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RI
YXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lG
dW5jKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAg
Y2FzZSBNYXJrc1N0YWxlOgotICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRy
dWUsIElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxl
LCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0
eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RI
YXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGRlc3Ryb3lGdW5jKTsKKyAgICAgICAgICAg
ICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2Nr
SGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwg
TWFya3NTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVj
dG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxl
LCBoYXNEZXN0cnVjdG9yLCBkZXN0cm95RnVuYyk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgY2FzZSBTd2VlcFRvRnJlZUxpc3Q6CiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChtYXJrc01vZGUpIHsKICAgICAgICAgICAgICAgICBjYXNlIE1h
cmtzTm90U3RhbGU6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwg
SXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJi
bGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBJ
c0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJs
ZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZSwgZGVzdHJveUZ1bmMp
OworICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIElzRW1wdHksIFN3
ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90
SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dl
ZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RI
YXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lG
dW5jKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAg
Y2FzZSBNYXJrc1N0YWxlOgotICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRy
dWUsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNj
cmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwg
SXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJi
bGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGRlc3Ryb3lGdW5jKTsK
KyAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0VtcHR5LCBTd2Vl
cFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhh
dmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwVG9G
cmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5l
d2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlLCBoYXNEZXN0cnVjdG9yLCBkZXN0cm95RnVuYyk7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KQEAgLTQwNSwyMCArNDE2LDIwIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
ZmluaXNoU3dlZXBLbm8KICAgICAgICAgICAgIGNhc2UgU3dlZXBPbmx5OgogICAgICAgICAgICAg
ICAgIHN3aXRjaCAobWFya3NNb2RlKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXJrc05vdFN0
YWxlOgotICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5
LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhh
dmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZT4oZnJlZUxpc3QsIE5vdEVtcHR5LCBTd2Vl
cE9ubHksIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZSwgZGVzdHJveUZ1bmMpOworICAgICAgICAgICAgICAg
ICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFz
RGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFy
a3NOb3RTdGFsZT4oZnJlZUxpc3QsIE5vdEVtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1
Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RT
dGFsZSwgaGFzRGVzdHJ1Y3RvciwgZGVzdHJveUZ1bmMpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYXNlIE1hcmtzU3RhbGU6Ci0gICAgICAgICAg
ICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHksIFN3ZWVwT25seSwgQmxv
Y2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVk
LCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgTm90RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0
cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0
YWxlLCBkZXN0cm95RnVuYyk7CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8
dHJ1ZSwgTm90RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmli
YmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgTm90
RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlLCBoYXNEZXN0cnVjdG9yLCBkZXN0cm95
RnVuYyk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgY2FzZSBTd2VlcFRvRnJlZUxpc3Q6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXJr
c01vZGUpIHsKICAgICAgICAgICAgICAgICBjYXNlIE1hcmtzTm90U3RhbGU6Ci0gICAgICAgICAg
ICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHksIFN3ZWVwVG9GcmVlTGlz
dCwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxs
b2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwgTm90RW1wdHksIFN3ZWVwVG9GcmVlTGlz
dCwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxs
b2NhdGVkLCBNYXJrc05vdFN0YWxlLCBkZXN0cm95RnVuYyk7CisgICAgICAgICAgICAgICAgICAg
IHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tI
YXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBN
YXJrc05vdFN0YWxlPihmcmVlTGlzdCwgTm90RW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tI
YXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBN
YXJrc05vdFN0YWxlLCBoYXNEZXN0cnVjdG9yLCBkZXN0cm95RnVuYyk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGNhc2UgTWFya3NTdGFsZToKLSAg
ICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBU
b0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZl
TmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBUb0Zy
ZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3
bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGRlc3Ryb3lGdW5jKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9j
a0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQs
IE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hh
c0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1h
cmtzU3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lGdW5jKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNDMx
LDcgKzQ0MiwxMyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZpbmlzaFN3ZWVwS25vCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBUaGUgdGVtcGxhdGUgYXJndW1lbnRzIGRvbid0
IG1hdHRlciBiZWNhdXNlIHRoZSBmaXJzdCBvbmUgaXMgZmFsc2UuCi0gICAgc3BlY2lhbGl6ZWRT
d2VlcDxmYWxzZSwgSXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERv
bnRTY3JpYmJsZSwgSGFzTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBlbXB0
eU1vZGUsIHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxs
b2NhdGVkTW9kZSwgbWFya3NNb2RlLCBkZXN0cm95RnVuYyk7CisgICAgc3BlY2lhbGl6ZWRTd2Vl
cDxmYWxzZSwgSXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRT
Y3JpYmJsZSwgSGFzTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBlbXB0eU1v
ZGUsIHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxsb2Nh
dGVkTW9kZSwgbWFya3NNb2RlLCBoYXNEZXN0cnVjdG9yLCBkZXN0cm95RnVuYyk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIERlc3Ryb3lGdW5jPgordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpm
aW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoRnJlZUxpc3QqIGZyZWVMaXN0LCBjb25zdCBE
ZXN0cm95RnVuYyYgZGVzdHJveUZ1bmMpCit7CisgICAgZmluaXNoU3dlZXBLbm93aW5nSGVhcENl
bGxUeXBlKGZyZWVMaXN0LCBBbHdheXNIYXNEZXN0cnVjdG9yKCksIGRlc3Ryb3lGdW5jKTsKIH0K
IAogaW5saW5lIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlKCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAJKHJldmlzaW9uIDIzMjIwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcg
KzE0Miw3IEBAIHZvaWQgU3Vic3BhY2U6OmRpZFJlbW92ZUJsb2NrKHNpemVfdCkKIHsKIH0KIAot
dm9pZCBTdWJzcGFjZTo6ZGlkQmVnaW5Td2VlcGluZ1RvRnJlZUxpc3QoTWFya2VkQmxvY2s6Okhh
bmRsZSopCit2b2lkIFN1YnNwYWNlOjpkaWRTd2VlcFRvRnJlZUxpc3QoTWFya2VkQmxvY2s6Okhh
bmRsZSopCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAko
cmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlc2l6ZUJpdHMoc2l6ZV90IG5ld1NpemUpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZW1vdmVCbG9jayhzaXplX3QgYmxvY2tJbmRleCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZEJlZ2luU3dlZXBpbmdUb0ZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkU3dlZXBUb0ZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsgLy8gVGhp
cyBpcyB0aGUgbGFzdCB0aGluZyB0aGF0IHN3ZWVwIGRvZXMuCiAKIHByb3RlY3RlZDoKICAgICB2
b2lkIGluaXRpYWxpemUoSGVhcENlbGxUeXBlKiwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAko
cmV2aXNpb24gMjMyMjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkKiB0cnlBbGxvY2F0ZUNlbGxIZWxwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXAsIHNpemVfdCBzaXplKQorQUxXQVlTX0lOTElO
RSB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUpCiB7CiAgICAgcmV0
dXJuIHRyeUFsbG9jYXRlQ2VsbEhlbHBlcjxUPihoZWFwLCBzaXplLCBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSb3BlU3RyaW5n
SGVhcENlbGxUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuaCIKKworI2luY2x1ZGUgIklz
b0NlbGxTZXRJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNSb3BlU3Ry
aW5nSGFzRGVzdHJ1Y3RvckZ1bmMgeworcHVibGljOgorICAgIEpTUm9wZVN0cmluZ0hhc0Rlc3Ry
dWN0b3JGdW5jKEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIGJpdHMpCisgICAg
ICAgIDogbV9iaXRzKGJpdHMpCisgICAgeworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgb3BlcmF0b3IoKShzaXplX3QgaSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2JpdHMtPmdldChpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQml0bWFwPE1hcmtlZEJsb2Nr
OjphdG9tc1BlckJsb2NrPiogbV9iaXRzOworfTsKKworc3RydWN0IEpTUm9wZVN0cmluZ0Rlc3Ry
b3lGdW5jIHsKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCog
Y2VsbCkgY29uc3QKKyAgICB7CisgICAgICAgIEpTUm9wZVN0cmluZyogc3RyaW5nID0gc3RhdGlj
X2Nhc3Q8SlNSb3BlU3RyaW5nKj4oY2VsbCk7CisgICAgICAgIHN0cmluZy0+SlNSb3BlU3RyaW5n
Ojp+SlNSb3BlU3RyaW5nKCk7CisgICAgfQorfTsKKworSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBl
OjpKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUoKQorICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRy
aWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQoreworfQorCitKU1Jv
cGVTdHJpbmdIZWFwQ2VsbFR5cGU6On5KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUoKQoreworfQor
Cit2b2lkIEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6
OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpCit7CisgICAgVk0mIHZtID0gKmhh
bmRsZS52bSgpOworICAgIAorICAgIGlmICh2bS5yb3BlU3RyaW5nc1dpdGhEZXN0cnVjdG9ycy5j
b250YWlucygmaGFuZGxlKSkgeworICAgICAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVh
cENlbGxUeXBlKAorICAgICAgICAgICAgZnJlZUxpc3QsCisgICAgICAgICAgICBKU1JvcGVTdHJp
bmdIYXNEZXN0cnVjdG9yRnVuYyh2bS5yb3BlU3RyaW5nc1dpdGhEZXN0cnVjdG9ycy5iaXRzKCZo
YW5kbGUpKSwKKyAgICAgICAgICAgIEpTUm9wZVN0cmluZ0Rlc3Ryb3lGdW5jKCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIGhhbmRsZS5maW5pc2hTd2VlcFdpdGhOb0Rlc3Ry
dWN0b3JzKGZyZWVMaXN0KTsKK30KKwordm9pZCBKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGU6OmRl
c3Ryb3koVk0mIHZtLCBKU0NlbGwqIGNlbGwpCit7CisgICAgSlNSb3BlU3RyaW5nRGVzdHJveUZ1
bmMoKSh2bSwgY2VsbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1JvcGVTdHJpbmdIZWFwQ2Vs
bFR5cGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSGVhcENlbGxUeXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUgOiBwdWJsaWMgSGVhcENlbGxUeXBlIHsKK3B1
YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUoKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUo
KTsKKyAgICAKKyAgICB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVl
TGlzdCopIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCopIG92ZXJyaWRl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHJldmlzaW9uIDIzMjIwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiAr
MjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAKKyNp
bmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgpAQCAtNTMsNyArNTQsOCBAQCB2b2lkIEpTUm9wZVN0cmluZzo6Um9wZUJ1aWxkZXI8UmVj
b3JkT3ZlCiAKIHZvaWQgSlNTdHJpbmc6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewotICAgIHN0
YXRpY19jYXN0PEpTU3RyaW5nKj4oY2VsbCktPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsKKyAgICBK
U1N0cmluZyogc3RyaW5nID0gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihjZWxsKTsKKyAgICBzdHJp
bmctPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsKIH0KIAogdm9pZCBKU1N0cmluZzo6ZHVtcFRvU3Ry
ZWFtKGNvbnN0IEpTQ2VsbCogY2VsbCwgUHJpbnRTdHJlYW0mIG91dCkKQEAgLTE4MSw2ICsxODMs
NyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVUb0F0b21pY1N0CiAgICAgaWYgKGxl
bmd0aCgpID4gbWF4TGVuZ3RoRm9yT25TdGFja1Jlc29sdmUpIHsKICAgICAgICAgcmVzb2x2ZVJv
cGUoZXhlYyk7CiAgICAgICAgIG1fdmFsdWUgPSBBdG9taWNTdHJpbmcobV92YWx1ZSk7CisgICAg
ICAgIGRpZEJlY29tZURlc3RydWN0aWJsZShleGVjLT52bSgpKTsKICAgICAgICAgc2V0SXM4Qml0
KG1fdmFsdWUuaW1wbCgpLT5pczhCaXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
ODksMTEgKzE5MiwxMyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVUb0F0b21pY1N0
CiAgICAgICAgIExDaGFyIGJ1ZmZlclttYXhMZW5ndGhGb3JPblN0YWNrUmVzb2x2ZV07CiAgICAg
ICAgIHJlc29sdmVSb3BlSW50ZXJuYWw4KGJ1ZmZlcik7CiAgICAgICAgIG1fdmFsdWUgPSBBdG9t
aWNTdHJpbmcoYnVmZmVyLCBsZW5ndGgoKSk7CisgICAgICAgIGRpZEJlY29tZURlc3RydWN0aWJs
ZShleGVjLT52bSgpKTsKICAgICAgICAgc2V0SXM4Qml0KG1fdmFsdWUuaW1wbCgpLT5pczhCaXQo
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUNoYXIgYnVmZmVyW21heExlbmd0aEZvck9uU3Rh
Y2tSZXNvbHZlXTsKICAgICAgICAgcmVzb2x2ZVJvcGVJbnRlcm5hbDE2KGJ1ZmZlcik7CiAgICAg
ICAgIG1fdmFsdWUgPSBBdG9taWNTdHJpbmcoYnVmZmVyLCBsZW5ndGgoKSk7CisgICAgICAgIGRp
ZEJlY29tZURlc3RydWN0aWJsZShleGVjLT52bSgpKTsKICAgICAgICAgc2V0SXM4Qml0KG1fdmFs
dWUuaW1wbCgpLT5pczhCaXQoKSk7CiAgICAgfQogCkBAIC0yMTYsNiArMjIxLDcgQEAgUmVmUHRy
PEF0b21pY1N0cmluZ0ltcGw+IEpTUm9wZVN0cmluZzo6cgogICAgICAgICByZXNvbHZlUm9wZShl
eGVjKTsKICAgICAgICAgaWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlzdGluZ0F0b21p
Y1N0cmluZyA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChtX3ZhbHVlLmltcGwoKSkpIHsKICAg
ICAgICAgICAgIG1fdmFsdWUgPSAqZXhpc3RpbmdBdG9taWNTdHJpbmc7CisgICAgICAgICAgICBk
aWRCZWNvbWVEZXN0cnVjdGlibGUoZXhlYy0+dm0oKSk7CiAgICAgICAgICAgICBzZXRJczhCaXQo
bV92YWx1ZS5pbXBsKCktPmlzOEJpdCgpKTsKICAgICAgICAgICAgIGNsZWFyRmliZXJzKCk7CiAg
ICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdBdG9taWNTdHJpbmc7CkBAIC0yMjgsNiArMjM0LDcg
QEAgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IEpTUm9wZVN0cmluZzo6cgogICAgICAgICByZXNv
bHZlUm9wZUludGVybmFsOChidWZmZXIpOwogICAgICAgICBpZiAoUmVmUHRyPEF0b21pY1N0cmlu
Z0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwKGJ1
ZmZlciwgbGVuZ3RoKCkpKSB7CiAgICAgICAgICAgICBtX3ZhbHVlID0gKmV4aXN0aW5nQXRvbWlj
U3RyaW5nOworICAgICAgICAgICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxlKGV4ZWMtPnZtKCkpOwog
ICAgICAgICAgICAgc2V0SXM4Qml0KG1fdmFsdWUuaW1wbCgpLT5pczhCaXQoKSk7CiAgICAgICAg
ICAgICBjbGVhckZpYmVycygpOwogICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQXRvbWljU3Ry
aW5nOwpAQCAtMjM3LDYgKzI0NCw3IEBAIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBKU1JvcGVT
dHJpbmc6OnIKICAgICAgICAgcmVzb2x2ZVJvcGVJbnRlcm5hbDE2KGJ1ZmZlcik7CiAgICAgICAg
IGlmIChSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9taWNTdHJpbmcgPSBBdG9t
aWNTdHJpbmdJbXBsOjpsb29rVXAoYnVmZmVyLCBsZW5ndGgoKSkpIHsKICAgICAgICAgICAgIG1f
dmFsdWUgPSAqZXhpc3RpbmdBdG9taWNTdHJpbmc7CisgICAgICAgICAgICBkaWRCZWNvbWVEZXN0
cnVjdGlibGUoZXhlYy0+dm0oKSk7CiAgICAgICAgICAgICBzZXRJczhCaXQobV92YWx1ZS5pbXBs
KCktPmlzOEJpdCgpKTsKICAgICAgICAgICAgIGNsZWFyRmliZXJzKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gZXhpc3RpbmdBdG9taWNTdHJpbmc7CkBAIC0yNTMsNiArMjYxLDcgQEAgdm9pZCBKU1Jv
cGVTdHJpbmc6OnJlc29sdmVSb3BlKEV4ZWNTdGF0ZQogICAgIGlmIChpc1N1YnN0cmluZygpKSB7
CiAgICAgICAgIEFTU0VSVCghc3Vic3RyaW5nQmFzZSgpLT5pc1JvcGUoKSk7CiAgICAgICAgIG1f
dmFsdWUgPSBzdWJzdHJpbmdCYXNlKCktPm1fdmFsdWUuc3Vic3RyaW5nU2hhcmluZ0ltcGwoc3Vi
c3RyaW5nT2Zmc2V0KCksIGxlbmd0aCgpKTsKKyAgICAgICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxl
KGV4ZWMtPnZtKCkpOwogICAgICAgICBzdWJzdHJpbmdCYXNlKCkuY2xlYXIoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTI2Miw2ICsyNzEsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVz
b2x2ZVJvcGUoRXhlY1N0YXRlCiAgICAgICAgIGlmIChhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBs
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCgpLCBidWZmZXIpKSB7CiAgICAgICAgICAg
ICBIZWFwOjpoZWFwKHRoaXMpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChuZXdJbXBsLT5j
b3N0KCkpOwogICAgICAgICAgICAgbV92YWx1ZSA9IFdURk1vdmUobmV3SW1wbCk7CisgICAgICAg
ICAgICBkaWRCZWNvbWVEZXN0cnVjdGlibGUoZXhlYy0+dm0oKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBvdXRPZk1lbW9yeShleGVjKTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTI3Niw2ICsyODYsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGUoRXhlY1N0YXRl
CiAgICAgaWYgKGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQobGVuZ3RoKCksIGJ1ZmZlcikpIHsKICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0
RXh0cmFNZW1vcnlBbGxvY2F0ZWQobmV3SW1wbC0+Y29zdCgpKTsKICAgICAgICAgbV92YWx1ZSA9
IFdURk1vdmUobmV3SW1wbCk7CisgICAgICAgIGRpZEJlY29tZURlc3RydWN0aWJsZShleGVjLT52
bSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBvdXRPZk1lbW9yeShleGVjKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzc2LDYgKzM4NywxMSBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJv
cGVTbG93Q2FzZShVCiAgICAgQVNTRVJUKGJ1ZmZlciA9PSBwb3NpdGlvbik7CiB9CiAKK3ZvaWQg
SlNSb3BlU3RyaW5nOjpkaWRCZWNvbWVEZXN0cnVjdGlibGUoVk0mIHZtKSBjb25zdAoreworICAg
IHZtLnJvcGVTdHJpbmdzV2l0aERlc3RydWN0b3JzLmFkZCh0aGlzKTsKK30KKwogdm9pZCBKU1Jv
cGVTdHJpbmc6Om91dE9mTWVtb3J5KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCShyZXZpc2lvbiAyMzIyMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NywxMCArODcsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAKLSAgICAvLyBXZSBzcGVjaWFsaXplIHRoZSBz
dHJpbmcgc3Vic3BhY2UgdG8gZ2V0IHRoZSBmYXN0ZXN0IHBvc3NpYmxlIHN3ZWVwLiBUaGlzIHdv
dWxkbid0IGJlCi0gICAgLy8gbmVjZXNzYXJ5IGlmIEpTU3RyaW5nIGRpZG4ndCBoYXZlIGEgZGVz
dHJ1Y3Rvci4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4KLSAgICBzdGF0aWMgQ29tcGxldGVTdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdTcGFjZTsKICAg
ICB9CkBAIC0xOTIsMTEgKzE5MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIElzOEJpdCA9IDF1CiAg
ICAgfTsKIAorICAgIGJvb2wgaXNSb3BlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5pc051bGwo
KTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsU2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNTdHJpbmcqIG90
aGVyKSBjb25zdDsKLSAgICBib29sIGlzUm9wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNO
dWxsKCk7IH0KICAgICBib29sIGlzU3Vic3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpczhCaXQo
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgSXM4Qml0OyB9CiAgICAgdm9pZCBzZXRJczhCaXQo
Ym9vbCBmbGFnKSBjb25zdApAQCAtMjQwLDYgKzIzOSwxMiBAQCBjbGFzcyBKU1JvcGVTdHJpbmcg
ZmluYWwgOiBwdWJsaWMgSlNTdHJpCiAgICAgZnJpZW5kIEpTUm9wZVN0cmluZyoganNTdHJpbmdC
dWlsZGVyKFZNKik7CiAKIHB1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4KKyAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVy
biAmdm0ucm9wZVN0cmluZ1NwYWNlOworICAgIH0KKyAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
T3ZlcmZsb3dIYW5kbGVyID0gQ3Jhc2hPbk92ZXJmbG93PgogICAgIGNsYXNzIFJvcGVCdWlsZGVy
IDogcHVibGljIE92ZXJmbG93SGFuZGxlciB7CiAgICAgcHVibGljOgpAQCAtMjkyLDI4ICsyOTcs
MjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKQogICAg
IHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQoIXN1
bU92ZXJmbG93czxpbnQzMl90PihzMS0+bGVuZ3RoKCksIHMyLT5sZW5ndGgoKSkpOwogICAgICAg
ICBzZXRMZW5ndGgoczEtPmxlbmd0aCgpICsgczItPmxlbmd0aCgpKTsKICAgICAgICAgc2V0SXM4
Qml0KHMxLT5pczhCaXQoKSAmJiBzMi0+aXM4Qml0KCkpOwogICAgICAgICBzZXRJc1N1YnN0cmlu
ZyhmYWxzZSk7Ci0gICAgICAgIGZpYmVyKDApLnNldCh2bSwgdGhpcywgczEpOwotICAgICAgICBm
aWJlcigxKS5zZXQodm0sIHRoaXMsIHMyKTsKKyAgICAgICAgZmliZXIoMCkuc2V0V2l0aG91dFdy
aXRlQmFycmllcihzMSk7CisgICAgICAgIGZpYmVyKDEpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIo
czIpOwogICAgICAgICBmaWJlcigyKS5jbGVhcigpOwogICAgIH0KIAotICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMiwgSlNTdHJpbmcqIHMz
KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTU3RyaW5n
KiBzMSwgSlNTdHJpbmcqIHMyLCBKU1N0cmluZyogczMpCiAgICAgewogICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVCghc3VtT3ZlcmZsb3dzPGludDMyX3Q+
KHMxLT5sZW5ndGgoKSwgczItPmxlbmd0aCgpLCBzMy0+bGVuZ3RoKCkpKTsKICAgICAgICAgc2V0
TGVuZ3RoKHMxLT5sZW5ndGgoKSArIHMyLT5sZW5ndGgoKSArIHMzLT5sZW5ndGgoKSk7CiAgICAg
ICAgIHNldElzOEJpdChzMS0+aXM4Qml0KCkgJiYgczItPmlzOEJpdCgpICYmICBzMy0+aXM4Qml0
KCkpOwogICAgICAgICBzZXRJc1N1YnN0cmluZyhmYWxzZSk7Ci0gICAgICAgIGZpYmVyKDApLnNl
dCh2bSwgdGhpcywgczEpOwotICAgICAgICBmaWJlcigxKS5zZXQodm0sIHRoaXMsIHMyKTsKLSAg
ICAgICAgZmliZXIoMikuc2V0KHZtLCB0aGlzLCBzMyk7CisgICAgICAgIGZpYmVyKDApLnNldFdp
dGhvdXRXcml0ZUJhcnJpZXIoczEpOworICAgICAgICBmaWJlcigxKS5zZXRXaXRob3V0V3JpdGVC
YXJyaWVyKHMyKTsKKyAgICAgICAgZmliZXIoMikuc2V0V2l0aG91dFdyaXRlQmFycmllcihzMyk7
CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIGJhc2UsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAt
NDAyLDEzICs0MDcsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX21h
eEludGVybmFsUm9wZUxlbmd0aCA9IDM7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIEpTU3RyaW5n
KiBjcmVhdGUoVk0mIHZtLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKKyAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0
cmluZyogczIpCiAgICAgewogICAgICAgICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0uaGVhcCkpIEpTUm9wZVN0cmlu
Zyh2bSk7CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0sIHMxLCBzMik7CiAg
ICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQotICAgIHN0YXRpYyBKU1N0cmluZyogY3Jl
YXRlKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKKyAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKFZNJiB2bSwgSlNTdHJpbmcq
IHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKICAgICB7CiAgICAgICAgIEpTUm9wZVN0
cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3RyaW5n
Pih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtKTsKICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hD
cmVhdGlvbih2bSwgczEsIHMyLCBzMyk7CkBAIC00MzEsNyArNDM2LDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNsZWFyRmliZXJzKCkgY29uc3Q7CiAgICAgU3RyaW5nVmlldyB1bnNhZmVWaWV3KEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyB2aWV3
V2l0aFVuZGVybHlpbmdTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7Ci0KKyAgICAKKyAgICB2b2lk
IGRpZEJlY29tZURlc3RydWN0aWJsZShWTSYpIGNvbnN0OworICAgIAogICAgIFdyaXRlQmFycmll
ckJhc2U8SlNTdHJpbmc+JiBmaWJlcih1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKICAgICAgICAg
QVNTRVJUKCFpc1N1YnN0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nSGVhcENlbGxUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0hlYXBDZWxsVHlwZS5jcHAJKHJldmlzaW9uIDIzMjIw
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSGVhcENlbGxUeXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0
cnVjdCBKU1N0cmluZ0Rlc3Ryb3lGdW5jIHsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0
b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICB7Ci0gICAgICAgIHN0YXRpY19jYXN0
PEpTU3RyaW5nKj4oY2VsbCktPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsKKyAgICAgICAgSlNTdHJp
bmcqIHN0cmluZyA9IHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oY2VsbCk7CisgICAgICAgIHN0cmlu
Zy0+SlNTdHJpbmc6On5KU1N0cmluZygpOwogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDIzMjIwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQAog
I2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5o
IgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpTUm9w
ZVN0cmluZ0hlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5oIgpAQCAtMjUyLDYgKzI1Myw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGNlbGxEYW5nZXJvdXNCaXRz
SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRl
cyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCiAgICAgLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihD
ZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCiAgICAg
LCBzdHJpbmdIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlw
ZT4oKSkKKyAgICAsIHJvcGVTdHJpbmdIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1Jv
cGVTdHJpbmdIZWFwQ2VsbFR5cGU+KCkpCiAgICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4o
KSkKICAgICAsIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91
bmlxdWU8SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCkBAIC0yNjMsNyArMjY1LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgY2VsbERhbmdlcm91c0JpdHNTcGFjZSgiSlNDZWxs
IERhbmdlcm91c0JpdHMiLCBoZWFwLCBjZWxsRGFuZ2Vyb3VzQml0c0hlYXBDZWxsVHlwZS5nZXQo
KSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKICAgICAsIGpzVmFsdWVHaWdhY2FnZUNlbGxT
cGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBKU0NlbGwiLCBoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBD
ZWxsVHlwZS5nZXQoKSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKQogICAgICwgZGVz
dHJ1Y3RpYmxlQ2VsbFNwYWNlKCJEZXN0cnVjdGlibGUgSlNDZWxsIiwgaGVhcCwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKLSAg
ICAsIHN0cmluZ1NwYWNlKCJKU1N0cmluZyIsIGhlYXAsIHN0cmluZ0hlYXBDZWxsVHlwZS5nZXQo
KSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKICAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNw
YWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKICAgICAsIGVhZ2VybHlT
d2VwdERlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJFYWdlcmx5IFN3ZXB0IEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IiwgaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0
TWFsbG9jQWxsb2NhdG9yLmdldCgpKQogICAgICwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFj
ZSgiSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlIiwgaGVhcCwgc2VnbWVudGVkVmFyaWFi
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCkBA
IC0zMDAsNyArMzAxLDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBl
KQogICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3BlcnR5VGFibGUpCiAgICAgLCBwcm94
eVJldm9rZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgUHJveHlSZXZva2UpCiAgICAgLCByZWdFeHBDb25zdHJ1Y3RvclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgUmVnRXhwQ29uc3RydWN0b3IpCisgICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgcm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNSb3BlU3Ry
aW5nKQogICAgICwgc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBTdHJpY3RN
b2RlVHlwZUVycm9yRnVuY3Rpb24pCisgICAgLCBzdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBzdHJpbmdIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU3RyaW5nKQogICAgICwgc3RydWN0
dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVSYXJlRGF0YSkKICAgICAsIHN0cnVjdHVyZVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIFN0cnVjdHVyZSkKICAgICAsIHdlYWtTZXRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha1NldCkKQEAg
LTMxNCw2ICszMTcsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKICAgICAsIGluZmVycmVkVHlwZXNXaXRoRmluYWxpemVy
cyhpbmZlcnJlZFR5cGVTcGFjZSkKICAgICAsIGluZmVycmVkVmFsdWVzV2l0aEZpbmFsaXplcnMo
aW5mZXJyZWRWYWx1ZVNwYWNlKQorICAgICwgcm9wZVN0cmluZ3NXaXRoRGVzdHJ1Y3RvcnMocm9w
ZVN0cmluZ1NwYWNlKQogICAgICwgZXZhbENvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEV2YWxDb2RlQmxvY2sp
CiAgICAgLCBmdW5jdGlvbkNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1bmN0aW9uQ29kZUJsb2NrKQogICAg
ICwgbW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIzMjIwOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
MCw2ICsxMjAsNyBAQCBjbGFzcyBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOwogY2xhc3Mg
SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IGNsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlOwogY2xhc3Mg
SlNSdW5Mb29wVGltZXI7CiBjbGFzcyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxU
eXBlOwogY2xhc3MgSlNTdHJpbmdIZWFwQ2VsbFR5cGU7CkBAIC0zMDksNiArMzEwLDcgQEAgcHVi
bGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGNlbGxEYW5nZXJvdXNCaXRz
SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTU3RyaW5nSGVhcENl
bGxUeXBlPiBzdHJpbmdIZWFwQ2VsbFR5cGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEpTUm9wZVN0
cmluZ0hlYXBDZWxsVHlwZT4gcm9wZVN0cmluZ0hlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdEhlYXBDZWxsVHlwZT4gc2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGU7CiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAtMzQxLDcgKzM0Myw2IEBAIHB1YmxpYzoKICAgICBD
b21wbGV0ZVN1YnNwYWNlIGNlbGxEYW5nZXJvdXNCaXRzU3BhY2U7CiAgICAgQ29tcGxldGVTdWJz
cGFjZSBqc1ZhbHVlR2lnYWNhZ2VDZWxsU3BhY2U7IC8vIEZJWE1FOiBUaGlzIHNwYWNlIGlzIHBy
b2JsZW1hdGljIGJlY2F1c2Ugd2UgaGF2ZSB0aGluZ3MgaW4gaGVyZSBsaWtlIERpcmVjdEFyZ3Vt
ZW50cyBhbmQgU2NvcGVkQXJndW1lbnRzOyB0aG9zZSBzaG91bGQgYmUgc3BsaXQgaW50byBKU1Zh
bHVlT09CIGNlbGxzIGFuZCBKU1ZhbHVlU3RyaWN0IGF1eGlsaWFyaWVzLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODU4CiAgICAgQ29tcGxldGVTdWJzcGFjZSBk
ZXN0cnVjdGlibGVDZWxsU3BhY2U7Ci0gICAgQ29tcGxldGVTdWJzcGFjZSBzdHJpbmdTcGFjZTsK
ICAgICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwogICAgIENvbXBs
ZXRlU3Vic3BhY2UgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CiAgICAgQ29t
cGxldGVTdWJzcGFjZSBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlOwpAQCAtMzc5LDcgKzM4
MCw5IEBAIHB1YmxpYzoKICAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CiAgICAg
SXNvU3Vic3BhY2UgcHJveHlSZXZva2VTcGFjZTsKICAgICBJc29TdWJzcGFjZSByZWdFeHBDb25z
dHJ1Y3RvclNwYWNlOworICAgIElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFjZTsKICAgICBJc29T
dWJzcGFjZSBzdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TcGFjZTsKKyAgICBJc29TdWJzcGFj
ZSBzdHJpbmdTcGFjZTsKICAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOwog
ICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHdlYWtTZXRT
cGFjZTsKQEAgLTM5NCw2ICszOTcsNyBAQCBwdWJsaWM6CiAgICAgSXNvQ2VsbFNldCBleGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOwogICAgIElzb0NlbGxTZXQgaW5mZXJy
ZWRUeXBlc1dpdGhGaW5hbGl6ZXJzOwogICAgIElzb0NlbGxTZXQgaW5mZXJyZWRWYWx1ZXNXaXRo
RmluYWxpemVyczsKKyAgICBJc29DZWxsU2V0IHJvcGVTdHJpbmdzV2l0aERlc3RydWN0b3JzOwog
ICAgIAogICAgIHN0cnVjdCBTcGFjZUFuZEZpbmFsaXplclNldCB7CiAgICAgICAgIElzb1N1YnNw
YWNlIHNwYWNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341413</attachid>
            <date>2018-05-26 17:04:37 -0700</date>
            <delta_ts>2018-05-30 08:29:29 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>58867</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBA
CisyMDE4LTA1LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Um9wZSBzdHJpbmcgc3dlZXBpbmcgc2hvdWxkIGF2b2lkIHRvdWNoaW5nIHVucmVzb2x2ZWQgcm9w
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTk2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVzcGVj
aWFsbHkgd2hlbiByb3BlcyBhcmUgYmVpbmcgdXNlZCBpbiBhbmdlciwgYSBsb3Qgb2YgSlNSb3Bl
U3RyaW5nIG9iamVjdHMgYXJlIG5ldmVyIHJlc29sdmVkLgorICAgICAgICBUaHVzIHRoZXkgZG9u
J3QgbmVlZCBkZXN0cnVjdGlvbi4gIFNpbmNlIGRlc3RydWN0aW9uIGlzIGV4cGVuc2l2ZSwgdGhh
dCB3b3VsZCBiZSB1c2VmdWwgdG8ga25vdy4KKyAgICAgICAgCisgICAgICAgIFJvcGVzIGFyZSB1
c3VhbGx5IHVucmVzb2x2ZWQgYmVjYXVzZSBwZW9wbGUgZG8gc29tZXRoaW5nIGxpa2UgdGhpczoK
KyAgICAgICAgCisgICAgICAgIHZhciByZXN1bHQgPSAiIjsKKyAgICAgICAgZm9yICh0aGluZ3Mp
CisgICAgICAgICAgICByZXN1bHQgKz0gc3R1ZmYKKyAgICAgICAgdXNlIHJlc3VsdAorICAgICAg
ICAKKyAgICAgICAgSW4gdGhhdCBjYXNlLCB3ZSB3aWxsIGNyZWF0ZSBhIEpTUm9wZVN0cmluZyBm
b3IgZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AsIGJ1dCB3ZSB3aWxsIG9ubHkKKyAgICAgICAg
cmVzb2x2ZSB0aGUgbGFzdCBvbmUuICBUaGlzIGNvbWVzIHVwIG92ZXIgYW5kIG92ZXIgYWdhaW4u
ICBGb3IgZXhhbXBsZSwgdGhpczoKKyAgICAgICAgCisgICAgICAgICJmb28iICsgYmFyICsgImJh
eiIgKyBmdXp6ICsgImJ1enoiICsgdGhpbmd5ICsgInN0dWZmIgorICAgICAgICAKKyAgICAgICAg
d2lsbCBjcmVhdGUgdGhyZWUgSlNSb3BlU3RyaW5ncywgYnV0IG9ubHkgdGhlIGxhc3Qgb25lIHdp
bGwgZ2V0IHJlc29sdmVkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgdXNlcyBhbiBJ
c29DZWxsU2V0IHRvIHRyYWNrIHdoaWNoIEpTUm9wZVN0cmluZ3MgaGF2ZSBiZWVuIHJlc29sdmVk
LCBzbyB0aGF0IHdlIGNhbgorICAgICAgICBza2lwIGRlc3RydWN0aW5nIHRob3NlIHRoYXQgaGF2
ZW4ndCBiZWVuIHJlc29sdmVkLiBUbyBkbyB0aGF0LCB0aGlzIGNoYW5nZSBwdXRzIEpTU3RyaW5n
IGFuZAorICAgICAgICBKU1JvcGVTdHJpbmcgaW50byB0aGVpciBvd24gSXNvU3Vic3BhY2VzLgor
ICAgICAgICAKKyAgICAgICAgVGhpcyBhbHNvIHJlbW92ZXMgc29tZSB1bm5lY2Vzc2FyeSBiYXJy
aWVycyBpbiB0aGUgY29uc3RydWN0aW9uIG9mIEpTUm9wZVN0cmluZ3MuCisgICAgICAgIAorICAg
ICAgICBUaW55IHNwbGF5IHNwZWVkLXVwLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBoZWFwL0F0b21JbmRpY2VzLmg6CisgICAgICAgIChKU0M6OkF0b21JbmRpY2VzOjpBdG9tSW5k
aWNlcyk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6CisgICAgICAgICogaGVhcC9Jc29D
ZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGQpOgorICAgICAg
ICAoSlNDOjpJc29DZWxsU2V0OjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0Ojpj
b250YWlucyBjb25zdCk6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OmJpdHMgY29uc3QpOgor
ICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFj
ZTo6ZGlkU3dlZXBUb0ZyZWVMaXN0KToKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmRpZEJl
Z2luU3dlZXBpbmdUb0ZyZWVMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0lzb1N1YnNw
YWNlLmg6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Okhhc05vRGVzdHJ1Y3Rvcjo6b3Bl
cmF0b3IoKSBjb25zdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxs
VHlwZSk6CisgICAgICAgICogaGVhcC9TdWJzcGFjZS5jcHA6CisgICAgICAgIChKU0M6OlN1YnNw
YWNlOjpkaWRTd2VlcFRvRnJlZUxpc3QpOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6ZGlkQmVn
aW5Td2VlcGluZ1RvRnJlZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvU3Vic3BhY2Uu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6YWxs
b2NhdGVDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmdIYXNEZXN0cnVjdG9yRnVuYzo6
SlNSb3BlU3RyaW5nSGFzRGVzdHJ1Y3RvckZ1bmMpOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJp
bmdIYXNEZXN0cnVjdG9yRnVuYzo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
Um9wZVN0cmluZ0Rlc3Ryb3lGdW5jOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlOjpKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUpOgorICAg
ICAgICAoSlNDOjpKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGU6On5KU1JvcGVTdHJpbmdIZWFwQ2Vs
bFR5cGUpOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGU6OmZpbmlzaFN3
ZWVwKToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlOjpkZXN0cm95KToK
KyAgICAgICAgKiBydW50aW1lL0pTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5n
OjpyZXNvbHZlUm9wZVRvQXRvbWljU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNSb3Bl
U3RyaW5nOjpyZXNvbHZlUm9wZVRvRXhpc3RpbmdBdG9taWNTdHJpbmcgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNSb3BlU3RyaW5nOjpkaWRCZWNvbWVEZXN0cnVjdGlibGUgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnN1YnNwYWNlRm9yKToK
KyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTgtMDUtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gUmVuYW1lIEFycmF5I2ZsYXR0ZW4gdG8g
ZmxhdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04
MjcsNiArODI3LDcgQEAgcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKIHJ1bnRpbWUvSlNQ
cm9taXNlUHJvdG90eXBlLmNwcAogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3Bw
CiBydW50aW1lL0pTUHJveHkuY3BwCitydW50aW1lL0pTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5j
cHAKIHJ1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCiBydW50aW1lL0pTU2NvcGUuY3BwCiBydW50
aW1lL0pTU2NyaXB0RmV0Y2hlci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDYgKzM0
OCw3IEBACiAJCTBGNUNGOTg5MUU5RUQ2NTIwMEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUNGOTg3
MUU5RUQ2NEUwMEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uaCAqLzsgfTsKIAkJMEY1RTBG
RDgyMDdDNzI3MzAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUUwRkQ2
MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmgg
Ki87IH07CiAJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFMEZFNTIw
ODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNUU3OTBEMjBCOEMxOEIwMEI4MDlCOCAv
KiBKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUU3OTBCMjBCOEMxNDgwMEI4MDlCOCAvKiBKU1JvcGVTdHJp
bmdIZWFwQ2VsbFR5cGUuaCAqLzsgfTsKIAkJMEY1RUY5MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJ
VFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIw
QSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwRkU4RTFGRkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGNjE4MzJBMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0Nv
bnZlbnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNjE4MzIxMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLzsg
fTsKQEAgLTIzNzUsNiArMjM3Niw4IEBACiAJCTBGNUUwRkQ3MjA3QzcyNzEwMDk3RjBERSAvKiBE
RkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3Bw
OyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNv
U3Vic3BhY2VQZXJWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJc29TdWJz
cGFjZVBlclZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUUwRkU2MjA4NkFE
NDcwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IElzb1N1YnNwYWNlUGVyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjVFNzkwQjIwQjhDMTQ4MDBCODA5QjggLyogSlNSb3BlU3RyaW5nSGVhcENl
bGxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUm9wZVN0cmluZ0hl
YXBDZWxsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFNzkwQzIwQjhD
MTQ5MDBCODA5QjggLyogSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFCMTY4NzhGNzgwMDNFNUMyNSAvKiBK
SVRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVGh1
bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RUY5MUMxNjg3OEY3ODAw
M0U1QzI1IC8qIEpJVFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
SVRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MEZFOEQxRkZDMzZG
QzAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjQ1LDkgKzY2NDgsOSBAQAogCQkJCUUxNzg2
MzNGMEQ5QkVDMDAwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggKi8sCiAJCQkJRTM1
RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5j
cHAgKi8sCiAJCQkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5oICovLAorCQkJCUE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4
QXJyYXkuaCAqLywKIAkJCQlBN0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5o
ICovLAogCQkJCUE3QThBRjJEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8sCi0J
CQkJQTdBOEFGMkIxN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJheS5oICovLAogCQkJCUJDOUJC
OTVCMEUxOTY4MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywKIAkJCQlCQzEx
NjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovLAogCQkJCUExQjlF
MjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovLApAQCAtNjc1Nyw5ICs2
NzYwLDkgQEAKIAkJCQk3OUI4MTk5MjFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9iYWxPYmplY3RJ
bmxpbmVzLmggKi8sCiAJCQkJNTNGMTFGNDIyMDkxNzQ5ODAwRTQxMUE3IC8qIEpTSW1tdXRhYmxl
QnV0dGVyZmx5LmNwcCAqLywKIAkJCQk1M0YxMUY0MDIwOTEzOEQ3MDBFNDExQTcgLyogSlNJbW11
dGFibGVCdXR0ZXJmbHkuaCAqLywKKwkJCQkwRjJCNjZDOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJ
bnQ4QXJyYXkuaCAqLywKIAkJCQkwRjJCNjZDQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQxNkFy
cmF5LmggKi8sCiAJCQkJMEYyQjY2Q0IxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MzJBcnJheS5o
ICovLAotCQkJCTBGMkI2NkM5MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDhBcnJheS5oICovLAog
CQkJCUUzM0Y1MDdFMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5jcHAgKi8s
CiAJCQkJRTMzRjUwN0YxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggKi8s
CiAJCQkJRTMzRjUwNzYxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuY3BwICovLApAQCAtNjgwNSw2ICs2ODA4LDggQEAKIAkJCQkyQTA1QUJENDE5NjFERjI0
MDAzNDE3NTAgLyogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggKi8sCiAJCQkJODYyNTUzQ0Ux
NjEzNkFBNTAwOUYxN0QwIC8qIEpTUHJveHkuY3BwICovLAogCQkJCTg2MjU1M0NGMTYxMzZBQTUw
MDlGMTdEMCAvKiBKU1Byb3h5LmggKi8sCisJCQkJMEY1RTc5MEMyMEI4QzE0OTAwQjgwOUI4IC8q
IEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5jcHAgKi8sCisJCQkJMEY1RTc5MEIyMEI4QzE0ODAw
QjgwOUI4IC8qIEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5oICovLAogCQkJCTUzNDYzODcyMUU3
MEQwMTUwMEYxMkFDMSAvKiBKU1J1bkxvb3BUaW1lci5jcHAgKi8sCiAJCQkJNTM0NjM4NzAxRTcw
Q0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmggKi8sCiAJCQkJMTQ4NzRBRTExNUVCREU0
QTAwMkUzNTg3IC8qIEpTU2NvcGUuY3BwICovLApAQCAtNjg0OCwxMCArNjg1MywxMCBAQAogCQkJ
CTUzRjI1NkUxMUI4N0UyODAwMEI0Qjc2OCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNw
cCAqLywKIAkJCQk1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZS5oICovLAogCQkJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBKU1R5cGVJbmZv
LmggKi8sCi0JCQkJMEYyQjY2RDQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDE2QXJyYXkuaCAq
LywKLQkJCQkwRjJCNjZENTE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MzJBcnJheS5oICovLAog
CQkJCTBGMkI2NkQyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQ4QXJyYXkuaCAqLywKIAkJCQkw
RjJCNjZEMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50OENsYW1wZWRBcnJheS5oICovLAorCQkJ
CTBGMkI2NkQ0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggKi8sCisJCQkJMEYy
QjY2RDUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDMyQXJyYXkuaCAqLywKIAkJCQlBN0NBM0FF
MTE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmNwcCAqLywKIAkJCQlBN0NBM0FFMjE3REE0
MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8sCiAJCQkJNzA5RkI4NjExQUUzMzVDNjAwMzlE
MDY5IC8qIEpTV2Vha1NldC5jcHAgKi8sCkBAIC03MDYwLDExICs3MDY1LDExIEBACiAJCQkJMEYy
RDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oICovLAogCQkJCTBGMkQ0
REUzMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmNwcCAqLywKIAkJCQkwRjJENERFNDE5ODMy
RDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICovLAorCQkJCUE3QThBRjMwMTdBREI1RjMwMDVBQjE3
NCAvKiBVaW50OEFycmF5LmggKi8sCisJCQkJQTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVp
bnQ4Q2xhbXBlZEFycmF5LmggKi8sCiAJCQkJQTdBOEFGMzIxN0FEQjVGMzAwNUFCMTc0IC8qIFVp
bnQxNkFycmF5LmggKi8sCiAJCQkJODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldp
dGhGcmFjdGlvbi5oICovLAogCQkJCUE3QThBRjMzMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJB
cnJheS5oICovLAotCQkJCUE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5Lmgg
Ki8sCi0JCQkJQTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5Lmgg
Ki8sCiAJCQkJMEZFMDUwMjMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgKi8sCiAJ
CQkJMEZFMDUwMjQxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5oICovLAogCQkJCUUxOEUz
QTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8sCkBAIC04NzA4LDYgKzg3MTMsNyBAQAog
CQkJCTBGRDhBMzJBMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMkMxN0Q1MUY1NzAwQ0EyQzQw
IC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTcyMTFFMTkzQjlDNTkwMDMxRjZFRCAvKiBERkdUcmFuc2l0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjVFNzkwRDIwQjhDMThCMDBCODA5QjggLyogSlNSb3Bl
U3RyaW5nSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1RjE5
MDA2QTU5N0MgLyogREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCRTBGNzcxNkMxREIxMjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMzRCMTRBMTZENDIwMTMwMDFDREE1QSAvKiBERkdVc2VLaW5kLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0F0b21JbmRp
Y2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQXRvbUluZGlj
ZXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQXRv
bUluZGljZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIHN0cnVjdCBBdG9tSW5kaWNlcyB7CiAgICAgQXRvbUluZGljZXMoKSB7IH0KICAgICAKLSAg
ICBBdG9tSW5kaWNlcyhIZWFwQ2VsbCogY2VsbCkKKyAgICBBdG9tSW5kaWNlcyhjb25zdCBIZWFw
Q2VsbCogY2VsbCkKICAgICAgICAgOiBibG9jayhNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCkp
CiAgICAgICAgICwgYmxvY2tJbmRleChibG9jay0+aGFuZGxlKCkuaW5kZXgoKSkKICAgICAgICAg
LCBhdG9tTnVtYmVyKGJsb2NrLT5hdG9tTnVtYmVyKGNlbGwpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSAr
NDUsMTQgQEAgcHVibGljOgogICAgIElzb0NlbGxTZXQoSXNvU3Vic3BhY2UmIHN1YnNwYWNlKTsK
ICAgICB+SXNvQ2VsbFNldCgpOwogICAgIAotICAgIGJvb2wgYWRkKEhlYXBDZWxsKiBjZWxsKTsg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBjZWxsIHdhcyBuZXdseSBhZGRlZC4KKyAgICBib29sIGFk
ZChjb25zdCBIZWFwQ2VsbCopOyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNlbGwgd2FzIG5ld2x5
IGFkZGVkLgogICAgIAotICAgIGJvb2wgcmVtb3ZlKEhlYXBDZWxsKiBjZWxsKTsgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBjZWxsIHdhcyBwcmV2aW91c2x5IHByZXNlbnQgYW5kIGdvdCByZW1vdmVk
LgorICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEhlYXBDZWxsKik7IC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgY2VsbCB3YXMgcHJldmlvdXNseSBwcmVzZW50IGFuZCBnb3QgcmVtb3ZlZC4KICAgICAKLSAg
ICBib29sIGNvbnRhaW5zKEhlYXBDZWxsKiBjZWxsKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5z
KGNvbnN0IEhlYXBDZWxsKikgY29uc3Q7CisgICAgCisgICAgYm9vbCBjb250YWlucyhNYXJrZWRC
bG9jazo6SGFuZGxlKikgY29uc3Q7CisgICAgQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJs
b2NrPiogYml0cyhNYXJrZWRCbG9jazo6SGFuZGxlKikgY29uc3Q7CiAgICAgCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBh
cmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOwogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxp
bmUgYm9vbCBJc29DZWxsU2V0OjphZGQoSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgYm9vbCBJc29D
ZWxsU2V0OjphZGQoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7CiAgICAgQXRvbUluZGljZXMgYXRv
bUluZGljZXMoY2VsbCk7CiAgICAgYXV0byYgYml0c1B0clJlZiA9IG1fYml0c1thdG9tSW5kaWNl
cy5ibG9ja0luZGV4XTsKQEAgLTQxLDcgKzQxLDcgQEAgaW5saW5lIGJvb2wgSXNvQ2VsbFNldDo6
YWRkKEhlYXBDZWxsKiBjZQogICAgIHJldHVybiAhYml0cy0+Y29uY3VycmVudFRlc3RBbmRTZXQo
YXRvbUluZGljZXMuYXRvbU51bWJlcik7CiB9CiAKLWlubGluZSBib29sIElzb0NlbGxTZXQ6OnJl
bW92ZShIZWFwQ2VsbCogY2VsbCkKK2lubGluZSBib29sIElzb0NlbGxTZXQ6OnJlbW92ZShjb25z
dCBIZWFwQ2VsbCogY2VsbCkKIHsKICAgICBBdG9tSW5kaWNlcyBhdG9tSW5kaWNlcyhjZWxsKTsK
ICAgICBhdXRvJiBiaXRzUHRyUmVmID0gbV9iaXRzW2F0b21JbmRpY2VzLmJsb2NrSW5kZXhdOwpA
QCAtNTEsNyArNTEsNyBAQCBpbmxpbmUgYm9vbCBJc29DZWxsU2V0OjpyZW1vdmUoSGVhcENlbGwq
CiAgICAgcmV0dXJuIGJpdHMtPmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoYXRvbUluZGljZXMuYXRv
bU51bWJlcik7CiB9CiAKLWlubGluZSBib29sIElzb0NlbGxTZXQ6OmNvbnRhaW5zKEhlYXBDZWxs
KiBjZWxsKSBjb25zdAoraW5saW5lIGJvb2wgSXNvQ2VsbFNldDo6Y29udGFpbnMoY29uc3QgSGVh
cENlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgQXRvbUluZGljZXMgYXRvbUluZGljZXMoY2VsbCk7
CiAgICAgYXV0byogYml0cyA9IG1fYml0c1thdG9tSW5kaWNlcy5ibG9ja0luZGV4XS5nZXQoKTsK
QEAgLTYwLDYgKzYwLDE2IEBAIGlubGluZSBib29sIElzb0NlbGxTZXQ6OmNvbnRhaW5zKEhlYXBD
ZWwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSBib29sIElzb0NlbGxTZXQ6OmNvbnRh
aW5zKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9i
bG9ja3NXaXRoQml0c1toYW5kbGUtPmluZGV4KCldOworfQorCitpbmxpbmUgQml0bWFwPE1hcmtl
ZEJsb2NrOjphdG9tc1BlckJsb2NrPiogSXNvQ2VsbFNldDo6Yml0cyhNYXJrZWRCbG9jazo6SGFu
ZGxlKiBoYW5kbGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYml0c1toYW5kbGUtPmluZGV4KCld
LmdldCgpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9pZCBJc29DZWxsU2V0Ojpm
b3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OSw3ICs3OSw3IEBAIHZvaWQgSXNvU3Vic3BhY2U6OmRpZFJlbW92ZUJsb2NrKHNpemVfdCAK
ICAgICAgICAgfSk7CiB9CiAKLXZvaWQgSXNvU3Vic3BhY2U6OmRpZEJlZ2luU3dlZXBpbmdUb0Zy
ZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQordm9pZCBJc29TdWJzcGFjZTo6ZGlk
U3dlZXBUb0ZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogewogICAgIG1fY2Vs
bFNldHMuZm9yRWFjaCgKICAgICAgICAgWyZdIChJc29DZWxsU2V0KiBzZXQpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgZGlkUmVzaXplQml0
cyhzaXplX3QgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZW1vdmVCbG9jayhzaXpl
X3QgYmxvY2tJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRCZWdpblN3ZWVwaW5nVG9GcmVl
TGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTd2VlcFRv
RnJlZUxpc3QoTWFya2VkQmxvY2s6OkhhbmRsZSopIG92ZXJyaWRlOwogICAgIAogICAgIHNpemVf
dCBtX3NpemU7CiAgICAgQmxvY2tEaXJlY3RvcnkgbV9kaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5Nyw0NSArMzk3LDIxIEBAIFN1YnNwYWNlKiBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
dWJzcGFjZSgKICAgICByZXR1cm4gZGlyZWN0b3J5KCktPnN1YnNwYWNlKCk7CiB9CiAKLXZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXAoRnJlZUxpc3QqIGZyZWVMaXN0KQordm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpmaW5pc2hTd2VlcFdpdGhOb0Rlc3RydWN0b3JzKEZyZWVMaXN0KiBm
cmVlTGlzdCkKIHsKLSAgICBTd2VlcGluZ1Njb3BlIHN3ZWVwaW5nU2NvcGUoKmhlYXAoKSk7Cisg
ICAgLy8gSGFuZGxlIHRoZSBuby1kZXN0cnVjdG9yIHNwZWNpYWxpemF0aW9ucyBoZXJlLCBzaW5j
ZSB3ZSBoYXZlIHRoZSBtb3N0IG9mIHRob3NlLiBUaGlzCisgICAgLy8gZW5zdXJlcyB0aGF0IHRo
ZXkgZG9uJ3QgZ2V0IHJlLXNwZWNpYWxpemVkIGZvciBldmVyeSBkZXN0cnVjdG9yIHNwYWNlLgog
ICAgIAogICAgIFN3ZWVwTW9kZSBzd2VlcE1vZGUgPSBmcmVlTGlzdCA/IFN3ZWVwVG9GcmVlTGlz
dCA6IFN3ZWVwT25seTsKLSAgICAKLSAgICBtX2RpcmVjdG9yeS0+c2V0SXNVbnN3ZXB0KE5vTG9j
a2luZ05lY2Vzc2FyeSwgdGhpcywgZmFsc2UpOwotICAgIAotICAgIG1fd2Vha1NldC5zd2VlcCgp
OwotICAgIAotICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IG1fYXR0cmlidXRlcy5kZXN0cnVj
dGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uCi0gICAgICAgICYmIG1fZGlyZWN0b3J5LT5pc0Rlc3Ry
dWN0aWJsZShOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMpOwotCi0gICAgaWYgKHN3ZWVwTW9kZSA9
PSBTd2VlcE9ubHkgJiYgIW5lZWRzRGVzdHJ1Y3Rpb24pCi0gICAgICAgIHJldHVybjsKIAotICAg
IGlmIChtX2lzRnJlZUxpc3RlZCkgewotICAgICAgICBkYXRhTG9nKCJGQVRBTDogIiwgUmF3UG9p
bnRlcih0aGlzKSwgIi0+c3dlZXA6IGJsb2NrIGlzIGZyZWUtbGlzdGVkLlxuIik7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIAotICAgIGlmIChpc0Fs
bG9jYXRlZCgpKSB7Ci0gICAgICAgIGRhdGFMb2coIkZBVEFMOiAiLCBSYXdQb2ludGVyKHRoaXMp
LCAiLT5zd2VlcDogYmxvY2sgaXMgYWxsb2NhdGVkLlxuIik7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIAotICAgIGlmIChzcGFjZSgpLT5pc01hcmtp
bmcoKSkKLSAgICAgICAgYmxvY2tGb290ZXIoKS5tX2xvY2subG9jaygpOwotICAgIAotICAgIHN1
YnNwYWNlKCktPmRpZEJlZ2luU3dlZXBpbmdUb0ZyZWVMaXN0KHRoaXMpOwotICAgIAotICAgIGlm
IChuZWVkc0Rlc3RydWN0aW9uKSB7Ci0gICAgICAgIHN1YnNwYWNlKCktPmZpbmlzaFN3ZWVwKCp0
aGlzLCBmcmVlTGlzdCk7CisgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gZmluaXNoU3dlZXBX
aXRoTm9EZXN0cnVjdG9ycygpIGlzIGNhbGxlZCBmcm9tIEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlw
ZS4gSXQKKyAgICAvLyBmZWx0IHNhZmVyIHRvIGhhdmUgdGhpcyBjaGVjayBoZXJlIHRoYW4gdGhl
cmUuCisgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkpIHsKKyAgICAgICAgaWYgKHNwYWNl
KCktPmlzTWFya2luZygpKQorICAgICAgICAgICAgYmxvY2tGb290ZXIoKS5tX2xvY2sudW5sb2Nr
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgLy8gSGFuZGxlIHRoZSBuby1k
ZXN0cnVjdG9yIHNwZWNpYWxpemF0aW9ucyBoZXJlLCBzaW5jZSB3ZSBoYXZlIHRoZSBtb3N0IG9m
IHRob3NlLiBUaGlzCi0gICAgLy8gZW5zdXJlcyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IHJlLXNwZWNp
YWxpemVkIGZvciBldmVyeSBkZXN0cnVjdG9yIHNwYWNlLgotICAgIAogICAgIEVtcHR5TW9kZSBl
bXB0eU1vZGUgPSB0aGlzLT5lbXB0eU1vZGUoKTsKICAgICBTY3JpYmJsZU1vZGUgc2NyaWJibGVN
b2RlID0gdGhpcy0+c2NyaWJibGVNb2RlKCk7CiAgICAgTmV3bHlBbGxvY2F0ZWRNb2RlIG5ld2x5
QWxsb2NhdGVkTW9kZSA9IHRoaXMtPm5ld2x5QWxsb2NhdGVkTW9kZSgpOwpAQCAtNDUzLDIwICs0
MjksMjAgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcChGcmVlTGlzdAogICAgICAg
ICBjYXNlIElzRW1wdHk6CiAgICAgICAgICAgICBzd2l0Y2ggKG1hcmtzTW9kZSkgewogICAgICAg
ICAgICAgY2FzZSBNYXJrc05vdFN0YWxlOgotICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dl
ZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMs
IERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZT4o
ZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNOb0Rlc3RydWN0b3Jz
LCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGUs
IFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7CisgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2Vl
cDx0cnVlLCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywg
RG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihm
cmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMs
IERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZSwg
SGFzTm9EZXN0cnVjdG9yKCksIFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBjYXNlIE1hcmtzU3RhbGU6Ci0gICAgICAgICAg
ICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJs
b2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2Nh
dGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9j
a0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRl
ZCwgTWFya3NTdGFsZSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKKyAgICAgICAgICAgICAgICBz
cGVjaWFsaXplZFN3ZWVwPHRydWUsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNO
b0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1h
cmtzU3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9E
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJr
c1N0YWxlLCBIYXNOb0Rlc3RydWN0b3IoKSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE5vdEVtcHR5OgogICAgICAgICAgICAgc3dpdGNoIChtYXJrc01vZGUp
IHsKICAgICAgICAgICAgIGNhc2UgTWFya3NOb3RTdGFsZToKLSAgICAgICAgICAgICAgICBzcGVj
aWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9E
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJr
c05vdFN0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05v
RGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFy
a3NOb3RTdGFsZSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKKyAgICAgICAgICAgICAgICBzcGVj
aWFsaXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzTm9E
ZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJr
c05vdFN0YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc05v
RGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFy
a3NOb3RTdGFsZSwgSGFzTm9EZXN0cnVjdG9yKCksIFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBjYXNlIE1hcmtzU3RhbGU6
Ci0gICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBU
b0ZyZWVMaXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhh
dmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwVG9G
cmVlTGlzdCwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZl
TmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIFtdIChWTSYsIEpTQ2VsbCopIHsgfSk7CisgICAg
ICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVM
aXN0LCBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlz
dCwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlB
bGxvY2F0ZWQsIE1hcmtzU3RhbGUsIEhhc05vRGVzdHJ1Y3RvcigpLCBbXSAoVk0mLCBKU0NlbGwq
KSB7IH0pOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CkBAIC00NzUsMTEgKzQ1MSw0OCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnN3ZWVwKEZyZWVMaXN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogICAg
IAotICAgIGlmICh0cnlTcGVjaWFsaXplZCgpKQorICAgIGlmICghdHJ5U3BlY2lhbGl6ZWQoKSkg
eworICAgICAgICAvLyBUaGUgdGVtcGxhdGUgYXJndW1lbnRzIGRvbid0IG1hdHRlciBiZWNhdXNl
IHRoZSBmaXJzdCBvbmUgaXMgZmFsc2UuCisgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8ZmFsc2Us
IElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUs
IEhhc05ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgZW1wdHlNb2RlLCBzd2Vl
cE1vZGUsIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRl
ZE1vZGUsIG1hcmtzTW9kZSwgSGFzTm9EZXN0cnVjdG9yKCksIFtdIChWTSYsIEpTQ2VsbCopIHsg
fSk7CisgICAgfQorfQorCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwKEZyZWVMaXN0
KiBmcmVlTGlzdCkKK3sKKyAgICBTd2VlcGluZ1Njb3BlIHN3ZWVwaW5nU2NvcGUoKmhlYXAoKSk7
CisgICAgCisgICAgU3dlZXBNb2RlIHN3ZWVwTW9kZSA9IGZyZWVMaXN0ID8gU3dlZXBUb0ZyZWVM
aXN0IDogU3dlZXBPbmx5OworICAgIAorICAgIG1fZGlyZWN0b3J5LT5zZXRJc1Vuc3dlcHQoTm9M
b2NraW5nTmVjZXNzYXJ5LCB0aGlzLCBmYWxzZSk7CisgICAgCisgICAgbV93ZWFrU2V0LnN3ZWVw
KCk7CisgICAgCisgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gbV9hdHRyaWJ1dGVzLmRlc3Ry
dWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb24KKyAgICAgICAgJiYgbV9kaXJlY3RvcnktPmlzRGVz
dHJ1Y3RpYmxlKE5vTG9ja2luZ05lY2Vzc2FyeSwgdGhpcyk7CisKKyAgICBpZiAoc3dlZXBNb2Rl
ID09IFN3ZWVwT25seSAmJiAhbmVlZHNEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgLy8gVGhlIHRlbXBsYXRlIGFyZ3VtZW50cyBkb24ndCBtYXR0ZXIgYmVjYXVzZSB0aGUgZmly
c3Qgb25lIGlzIGZhbHNlLgotICAgIHNwZWNpYWxpemVkU3dlZXA8ZmFsc2UsIElzRW1wdHksIFN3
ZWVwT25seSwgQmxvY2tIYXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIEhhc05ld2x5QWxs
b2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgZW1wdHlNb2RlLCBzd2VlcE1vZGUsIEJsb2Nr
SGFzTm9EZXN0cnVjdG9ycywgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGUsIG1hcmtz
TW9kZSwgW10gKFZNJiwgSlNDZWxsKikgeyB9KTsKKyAgICBpZiAobV9pc0ZyZWVMaXN0ZWQpIHsK
KyAgICAgICAgZGF0YUxvZygiRkFUQUw6ICIsIFJhd1BvaW50ZXIodGhpcyksICItPnN3ZWVwOiBi
bG9jayBpcyBmcmVlLWxpc3RlZC5cbiIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoaXNBbGxvY2F0ZWQoKSkgeworICAgICAgICBk
YXRhTG9nKCJGQVRBTDogIiwgUmF3UG9pbnRlcih0aGlzKSwgIi0+c3dlZXA6IGJsb2NrIGlzIGFs
bG9jYXRlZC5cbiIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKKyAgICBpZiAoc3BhY2UoKS0+aXNNYXJraW5nKCkpCisgICAgICAgIGJsb2NrRm9v
dGVyKCkubV9sb2NrLmxvY2soKTsKKyAgICAKKyAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9G
cmVlTGlzdCkKKyAgICAgICAgc3Vic3BhY2UoKS0+ZGlkU3dlZXBUb0ZyZWVMaXN0KHRoaXMpOwor
ICAgIAorICAgIGlmIChuZWVkc0Rlc3RydWN0aW9uKQorICAgICAgICBzdWJzcGFjZSgpLT5maW5p
c2hTd2VlcCgqdGhpcywgZnJlZUxpc3QpOworICAgIGVsc2UKKyAgICAgICAgZmluaXNoU3dlZXBX
aXRoTm9EZXN0cnVjdG9ycyhmcmVlTGlzdCk7CiB9CiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNGcmVlTGlzdGVkQ2VsbChjb25zdCB2b2lkKiB0YXJnZXQpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzMywxMCArMTMzLDIyIEBAIHB1YmxpYzoKICAgICAgICAgLy8gbWlzdGFrZSBvZiBtYWtp
bmcgYSBwb3AgZnJlZWxpc3QgcmF0aGVyIHRoYW4gYSBidW1wIGZyZWVsaXN0LgogICAgICAgICB2
b2lkIHN3ZWVwKEZyZWVMaXN0Kik7CiAgICAgICAgIAotICAgICAgICAvLyBUaGlzIGlzIHRvIGJl
IGNhbGxlZCBieSBTdWJzcGFjZS4KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVzdHJveUZ1
bmM+CiAgICAgICAgIHZvaWQgZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKEZyZWVMaXN0
KiwgY29uc3QgRGVzdHJveUZ1bmMmKTsKICAgICAgICAgCisgICAgICAgIHN0cnVjdCBIYXNOb0Rl
c3RydWN0b3IgeworICAgICAgICAgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yKCkoc2l6
ZV90KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAg
ICAgc3RydWN0IEFsd2F5c0hhc0Rlc3RydWN0b3IgeworICAgICAgICAgICAgQUxXQVlTX0lOTElO
RSBib29sIG9wZXJhdG9yKCkoc2l6ZV90KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAg
IH07CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNEZXN0cnVjdG9yRnVu
YywgdHlwZW5hbWUgRGVzdHJveUZ1bmM+CisgICAgICAgIHZvaWQgZmluaXNoU3dlZXBLbm93aW5n
SGVhcENlbGxUeXBlKEZyZWVMaXN0KiwgY29uc3QgSGFzRGVzdHJ1Y3RvckZ1bmMmLCBjb25zdCBE
ZXN0cm95RnVuYyYpOworICAgICAgICAKKyAgICAgICAgdm9pZCBmaW5pc2hTd2VlcFdpdGhOb0Rl
c3RydWN0b3JzKEZyZWVMaXN0Kik7CisKICAgICAgICAgdm9pZCB1bnN3ZWVwV2l0aE5vTmV3bHlB
bGxvY2F0ZWQoKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgemFwKGNvbnN0IEZyZWVMaXN0Jik7
CkBAIC0yMDksOCArMjIxLDggQEAgcHVibGljOgogICAgICAgICBOZXdseUFsbG9jYXRlZE1vZGUg
bmV3bHlBbGxvY2F0ZWRNb2RlKCk7CiAgICAgICAgIE1hcmtzTW9kZSBtYXJrc01vZGUoKTsKICAg
ICAgICAgCi0gICAgICAgIHRlbXBsYXRlPGJvb2wsIEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBTd2Vl
cERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtz
TW9kZSwgdHlwZW5hbWUgRGVzdHJveUZ1bmM+Ci0gICAgICAgIHZvaWQgc3BlY2lhbGl6ZWRTd2Vl
cChGcmVlTGlzdCosIEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBTd2VlcERlc3RydWN0aW9uTW9kZSwg
U2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtzTW9kZSwgY29uc3QgRGVzdHJv
eUZ1bmMmKTsKKyAgICAgICAgdGVtcGxhdGU8Ym9vbCwgRW1wdHlNb2RlLCBTd2VlcE1vZGUsIFN3
ZWVwRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZSwgTWFy
a3NNb2RlLCB0eXBlbmFtZSBIYXNEZXN0cnVjdG9yRnVuYywgdHlwZW5hbWUgRGVzdHJveUZ1bmM+
CisgICAgICAgIHZvaWQgc3BlY2lhbGl6ZWRTd2VlcChGcmVlTGlzdCosIEVtcHR5TW9kZSwgU3dl
ZXBNb2RlLCBTd2VlcERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRl
ZE1vZGUsIE1hcmtzTW9kZSwgY29uc3QgSGFzRGVzdHJ1Y3RvckZ1bmMmLCBjb25zdCBEZXN0cm95
RnVuYyYpOwogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRJc0ZyZWVMaXN0ZWQoKTsKICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lu
bGluZXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw4ICsyMjQsOCBAQCBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDCiAvLwogLy8gT25seSB0aGUg
RG9lc05vdE5lZWREZXN0cnVjdGlvbiBvbmUgc2hvdWxkIGJlIHNwZWNpYWxpemVkIGJ5IE1hcmtl
ZEJsb2NrLgogCi10ZW1wbGF0ZTxib29sIHNwZWNpYWxpemUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OkVtcHR5TW9kZSBzcGVjaWFsaXplZEVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dl
ZXBNb2RlIHNwZWNpYWxpemVkU3dlZXBNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcERl
c3RydWN0aW9uTW9kZSBzcGVjaWFsaXplZERlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U2NyaWJibGVNb2RlIHNwZWNpYWxpemVkU2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgc3BlY2lhbGl6ZWROZXdseUFsbG9jYXRlZE1vZGUs
IE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok1hcmtzTW9kZSBzcGVjaWFsaXplZE1hcmtzTW9kZSwgdHlw
ZW5hbWUgRGVzdHJveUZ1bmM+Ci12b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVk
U3dlZXAoRnJlZUxpc3QqIGZyZWVMaXN0LCBNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUg
ZW1wdHlNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTd2VlcERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6Ok1hcmtzTW9kZSBtYXJrc01vZGUsIGNvbnN0IERlc3Ryb3lGdW5jJiBkZXN0
cm95RnVuYykKK3RlbXBsYXRlPGJvb2wgc3BlY2lhbGl6ZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6
RW1wdHlNb2RlIHNwZWNpYWxpemVkRW1wdHlNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2Vl
cE1vZGUgc3BlY2lhbGl6ZWRTd2VlcE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVwRGVz
dHJ1Y3Rpb25Nb2RlIHNwZWNpYWxpemVkRGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpTY3JpYmJsZU1vZGUgc3BlY2lhbGl6ZWRTY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBzcGVjaWFsaXplZE5ld2x5QWxsb2NhdGVkTW9kZSwg
TWFya2VkQmxvY2s6OkhhbmRsZTo6TWFya3NNb2RlIHNwZWNpYWxpemVkTWFya3NNb2RlLCB0eXBl
bmFtZSBIYXNEZXN0cnVjdG9yRnVuYywgdHlwZW5hbWUgRGVzdHJveUZ1bmM+Cit2b2lkIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoRnJlZUxpc3QqIGZyZWVMaXN0LCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcERlc3RydWN0
aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9k
ZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBu
ZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok1hcmtzTW9kZSBtYXJrc01v
ZGUsIGNvbnN0IEhhc0Rlc3RydWN0b3JGdW5jJiBoYXNEZXN0cnVjdG9yLCBjb25zdCBEZXN0cm95
RnVuYyYgZGVzdHJveUZ1bmMpCiB7CiAgICAgaWYgKHNwZWNpYWxpemUpIHsKICAgICAgICAgZW1w
dHlNb2RlID0gc3BlY2lhbGl6ZWRFbXB0eU1vZGU7CkBAIC0yNTksNiArMjU5LDkgQEAgdm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZQogICAgIAogICAgIG1fZGlyZWN0b3J5
LT5zZXRJc0Rlc3RydWN0aWJsZShOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMsIGZhbHNlKTsKICAg
ICAKKyAgICB1bnNpZ25lZCBlbmRBdG9tID0gbV9lbmRBdG9tOworICAgIHVuc2lnbmVkIGF0b21z
UGVyQ2VsbCA9IG1fYXRvbXNQZXJDZWxsOworCiAgICAgaWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxv
Y2F0b3IoKQogICAgICAgICAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0eQogICAgICAgICAmJiBuZXds
eUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCkgewpAQCAtMjc1LDkg
KzI3OCwxNCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlCiAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNoYXIqIHN0YXJ0
T2ZMYXN0Q2VsbCA9IHN0YXRpY19jYXN0PGNoYXIqPihjZWxsQWxpZ24oYmxvY2suYXRvbXMoKSAr
IG1fZW5kQXRvbSAtIDEpKTsKKyAgICAgICAgY2hhciogc3RhcnRPZkxhc3RDZWxsID0gc3RhdGlj
X2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsgZW5kQXRvbSAtIDEpKTsKICAg
ICAgICAgY2hhciogcGF5bG9hZEVuZCA9IHN0YXJ0T2ZMYXN0Q2VsbCArIGNlbGxTaXplOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChwYXlsb2FkRW5kIC0gTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSA8
PSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZibG9jaykpOworICAgICAgICBpZiAocGF5bG9hZEVuZCAt
IE1hcmtlZEJsb2NrOjpibG9ja1NpemUgPiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZibG9jaykpIHsK
KyAgICAgICAgICAgIGRhdGFMb2coInBheWxvYWRFbmQgPSAiLCBSYXdQb2ludGVyKHBheWxvYWRF
bmQpLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiZibG9jayA9ICIsIFJhd1BvaW50ZXIo
JmJsb2NrKSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJwYXlsb2FkRW5kIC0gYmxvY2tT
aXplID0gIiwgUmF3UG9pbnRlcihwYXlsb2FkRW5kIC0gTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSks
ICJcbiIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQogICAgICAgICBjaGFyKiBwYXlsb2FkQmVnaW4gPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGJs
b2NrLmF0b21zKCkpOwogICAgICAgICAKICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRv
RnJlZUxpc3QpCkBAIC0yODUsOCArMjkzLDExIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3BlY2lhbGl6ZWRTd2UKICAgICAgICAgaWYgKHNwYWNlKCktPmlzTWFya2luZygpKQogICAgICAg
ICAgICAgZm9vdGVyLm1fbG9jay51bmxvY2soKTsKICAgICAgICAgaWYgKGRlc3RydWN0aW9uTW9k
ZSAhPSBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMpIHsKLSAgICAgICAgICAgIGZvciAoY2hhciogY2Vs
bCA9IHBheWxvYWRCZWdpbjsgY2VsbCA8IHBheWxvYWRFbmQ7IGNlbGwgKz0gY2VsbFNpemUpCi0g
ICAgICAgICAgICAgICAgZGVzdHJveShjZWxsKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZW5kQXRvbTsgaSArPSBhdG9tc1BlckNlbGwpIHsKKyAgICAgICAgICAgICAgICBI
ZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmJsb2NrLmF0
b21zKClbaV0pOworICAgICAgICAgICAgICAgIGlmIChoYXNEZXN0cnVjdG9yKGkpKQorICAgICAg
ICAgICAgICAgICAgICBkZXN0cm95KGNlbGwpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CiAgICAgICAgICAgICBp
ZiAoc2NyaWJibGVNb2RlID09IFNjcmliYmxlKQpAQCAtMjk3LDcgKzMwOCw3IEBAIHZvaWQgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2UKICAgICAgICAgICAgIGRhdGFMb2coIlF1
aWNrbHkgc3dlcHQgYmxvY2sgIiwgUmF3UG9pbnRlcih0aGlzKSwgIiB3aXRoIGNlbGwgc2l6ZSAi
LCBjZWxsU2l6ZSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHBvaW50
ZXJEdW1wKGZyZWVMaXN0KSwgIlxuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KKyAgICAK
ICAgICAvLyBUaGlzIHByb2R1Y2VzIGEgZnJlZSBsaXN0IHRoYXQgaXMgb3JkZXJlZCBpbiByZXZl
cnNlIHRocm91Z2ggdGhlIGJsb2NrLgogICAgIC8vIFRoaXMgaXMgZmluZSwgc2luY2UgdGhlIGFs
bG9jYXRpb24gY29kZSBtYWtlcyBubyBhc3N1bXB0aW9ucyBhYm91dCB0aGUKICAgICAvLyBvcmRl
ciBvZiB0aGUgZnJlZSBsaXN0LgpAQCAtMzEwLDcgKzMyMSw3IEBAIHZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2UKICAgICBhdXRvIGhhbmRsZURlYWRDZWxsID0gWyZdIChz
aXplX3QgaSkgewogICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PEhlYXBDZWxsKj4oJmJsb2NrLmF0b21zKClbaV0pOwogCi0gICAgICAgIGlmIChkZXN0cnVjdGlv
bk1vZGUgIT0gQmxvY2tIYXNOb0Rlc3RydWN0b3JzKQorICAgICAgICBpZiAoZGVzdHJ1Y3Rpb25N
b2RlICE9IEJsb2NrSGFzTm9EZXN0cnVjdG9ycyAmJiBoYXNEZXN0cnVjdG9yKGkpKQogICAgICAg
ICAgICAgZGVzdHJveShjZWxsKTsKIAogICAgICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9G
cmVlTGlzdCkgewpAQCAtMzIyLDcgKzMzMyw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3BlY2lhbGl6ZWRTd2UKICAgICAgICAgICAgICsrY291bnQ7CiAgICAgICAgIH0KICAgICB9Owot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxs
KSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbmRBdG9tOyBpICs9IGF0b21zUGVyQ2Vs
bCkgewogICAgICAgICBpZiAoZW1wdHlNb2RlID09IE5vdEVtcHR5CiAgICAgICAgICAgICAmJiAo
KG1hcmtzTW9kZSA9PSBNYXJrc05vdFN0YWxlICYmIGZvb3Rlci5tX21hcmtzLmdldChpKSkKICAg
ICAgICAgICAgICAgICB8fCAobmV3bHlBbGxvY2F0ZWRNb2RlID09IEhhc05ld2x5QWxsb2NhdGVk
ICYmIGZvb3Rlci5tX25ld2x5QWxsb2NhdGVkLmdldChpKSkpKSB7CkBAIC0zNDgsNyArMzU5LDcg
QEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZQogICAgICAgICBmb3Ig
KHNpemVfdCBpIDogZGVhZENlbGxzKQogICAgICAgICAgICAgaGFuZGxlRGVhZENlbGwoaSk7CiAg
ICAgfQotCisgICAgCiAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsKICAg
ICAgICAgZnJlZUxpc3QtPmluaXRpYWxpemVMaXN0KGhlYWQsIHNlY3JldCwgY291bnQgKiBjZWxs
U2l6ZSk7CiAgICAgICAgIHNldElzRnJlZUxpc3RlZCgpOwpAQCAtMzU4LDggKzM2OSw4IEBAIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2UKICAgICAgICAgZGF0YUxvZygi
U2xvd2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIoJmJsb2NrKSwgIiB3aXRoIGNlbGwgc2l6
ZSAiLCBjZWxsU2l6ZSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0ZXMsICI6ICIsIHBv
aW50ZXJEdW1wKGZyZWVMaXN0KSwgIlxuIik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIERlc3Ry
b3lGdW5jPgotdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmaW5pc2hTd2VlcEtub3dpbmdIZWFw
Q2VsbFR5cGUoRnJlZUxpc3QqIGZyZWVMaXN0LCBjb25zdCBEZXN0cm95RnVuYyYgZGVzdHJveUZ1
bmMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNEZXN0cnVjdG9yRnVuYywgdHlwZW5hbWUgRGVzdHJv
eUZ1bmM+Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBD
ZWxsVHlwZShGcmVlTGlzdCogZnJlZUxpc3QsIGNvbnN0IEhhc0Rlc3RydWN0b3JGdW5jJiBoYXNE
ZXN0cnVjdG9yLCBjb25zdCBEZXN0cm95RnVuYyYgZGVzdHJveUZ1bmMpCiB7CiAgICAgU3dlZXBN
b2RlIHN3ZWVwTW9kZSA9IGZyZWVMaXN0ID8gU3dlZXBUb0ZyZWVMaXN0IDogU3dlZXBPbmx5Owog
ICAgIFN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSA9IHRoaXMtPnN3ZWVwRGVz
dHJ1Y3Rpb25Nb2RlKCk7CkBAIC0zODIsMjAgKzM5MywyMCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmZpbmlzaFN3ZWVwS25vCiAgICAgICAgICAgICBjYXNlIFN3ZWVwT25seToKICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG1hcmtzTW9kZSkgewogICAgICAgICAgICAgICAgIGNhc2UgTWFy
a3NOb3RTdGFsZToKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJ
c0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9l
c05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHks
IFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2
ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlLCBkZXN0cm95RnVuYyk7CisgICAgICAgICAg
ICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBPbmx5LCBCbG9j
a0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQs
IE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVz
dHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NO
b3RTdGFsZSwgaGFzRGVzdHJ1Y3RvciwgZGVzdHJveUZ1bmMpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYXNlIE1hcmtzU3RhbGU6Ci0gICAgICAg
ICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBPbmx5LCBC
bG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0
ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVz
dHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NT
dGFsZSwgZGVzdHJveUZ1bmMpOworICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVw
PHRydWUsIElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmli
YmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVlTGlzdCwgSXNF
bXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNO
b3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lG
dW5jKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICBjYXNlIFN3ZWVwVG9GcmVlTGlzdDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hcmtz
TW9kZSkgewogICAgICAgICAgICAgICAgIGNhc2UgTWFya3NOb3RTdGFsZToKLSAgICAgICAgICAg
ICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3Qs
IEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9j
YXRlZCwgTWFya3NOb3RTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwg
QmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2Nh
dGVkLCBNYXJrc05vdFN0YWxlLCBkZXN0cm95RnVuYyk7CisgICAgICAgICAgICAgICAgICAgIHNw
ZWNpYWxpemVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rl
c3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtz
Tm90U3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVz
dHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NO
b3RTdGFsZSwgaGFzRGVzdHJ1Y3RvciwgZGVzdHJveUZ1bmMpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYXNlIE1hcmtzU3RhbGU6Ci0gICAgICAg
ICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVM
aXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlB
bGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBJc0VtcHR5LCBTd2VlcFRvRnJlZUxpc3Qs
IEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9j
YXRlZCwgTWFya3NTdGFsZSwgZGVzdHJveUZ1bmMpOworICAgICAgICAgICAgICAgICAgICBzcGVj
aWFsaXplZFN3ZWVwPHRydWUsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0
cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0
YWxlPihmcmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0
b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUs
IGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lGdW5jKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNDA1LDIwICs0MTYs
MjAgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpmaW5pc2hTd2VlcEtubwogICAgICAgICAg
ICAgY2FzZSBTd2VlcE9ubHk6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXJrc01vZGUpIHsK
ICAgICAgICAgICAgICAgICBjYXNlIE1hcmtzTm90U3RhbGU6Ci0gICAgICAgICAgICAgICAgICAg
IHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0
cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05v
dFN0YWxlPihmcmVlTGlzdCwgTm90RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9y
cywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxl
LCBkZXN0cm95RnVuYyk7CisgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1
ZSwgTm90RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxl
LCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwgTm90
RW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlLCBoYXNEZXN0cnVjdG9yLCBkZXN0
cm95RnVuYyk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
ICAgIGNhc2UgTWFya3NTdGFsZToKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2Vl
cDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2Ny
aWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBO
b3RFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERv
ZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGRlc3Ryb3lGdW5jKTsKKyAgICAg
ICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBPbmx5
LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxv
Y2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hh
c0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1h
cmtzU3RhbGUsIGhhc0Rlc3RydWN0b3IsIGRlc3Ryb3lGdW5jKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBjYXNlIFN3ZWVwVG9GcmVlTGlz
dDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hcmtzTW9kZSkgewogICAgICAgICAgICAgICAg
IGNhc2UgTWFya3NOb3RTdGFsZToKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2Vl
cDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBE
b250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZy
ZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBE
b250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGUsIGRl
c3Ryb3lGdW5jKTsKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBO
b3RFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJi
bGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGU+KGZyZWVMaXN0LCBO
b3RFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJi
bGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGUsIGhhc0Rlc3RydWN0
b3IsIGRlc3Ryb3lGdW5jKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgY2FzZSBNYXJrc1N0YWxlOgotICAgICAgICAgICAgICAgICAgICBzcGVjaWFs
aXplZFN3ZWVwPHRydWUsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1
Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFs
ZT4oZnJlZUxpc3QsIE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3Rv
cnMsIERvbnRTY3JpYmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZSwg
ZGVzdHJveUZ1bmMpOworICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPHRydWUs
IE5vdEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3Jp
YmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIE5v
dEVtcHR5LCBTd2VlcFRvRnJlZUxpc3QsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJs
ZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZSwgaGFzRGVzdHJ1Y3Rvciwg
ZGVzdHJveUZ1bmMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00MzEsNyArNDQyLDEzIEBAIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6ZmluaXNoU3dlZXBLbm8KICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IC8vIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMgZG9uJ3QgbWF0dGVyIGJlY2F1c2UgdGhlIGZpcnN0
IG9uZSBpcyBmYWxzZS4KLSAgICBzcGVjaWFsaXplZFN3ZWVwPGZhbHNlLCBJc0VtcHR5LCBTd2Vl
cE9ubHksIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBIYXNOZXdseUFsbG9j
YXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIGVtcHR5TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVj
dGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlLCBtYXJrc01vZGUsIGRl
c3Ryb3lGdW5jKTsKKyAgICBzcGVjaWFsaXplZFN3ZWVwPGZhbHNlLCBJc0VtcHR5LCBTd2VlcE9u
bHksIEJsb2NrSGFzTm9EZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBIYXNOZXdseUFsbG9jYXRl
ZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIGVtcHR5TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlv
bk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlLCBtYXJrc01vZGUsIGhhc0Rl
c3RydWN0b3IsIGRlc3Ryb3lGdW5jKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVzdHJveUZ1
bmM+Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxs
VHlwZShGcmVlTGlzdCogZnJlZUxpc3QsIGNvbnN0IERlc3Ryb3lGdW5jJiBkZXN0cm95RnVuYykK
K3sKKyAgICBmaW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIEFsd2F5c0hh
c0Rlc3RydWN0b3IoKSwgZGVzdHJveUZ1bmMpOwogfQogCiBpbmxpbmUgTWFya2VkQmxvY2s6Okhh
bmRsZTo6U3dlZXBEZXN0cnVjdGlvbk1vZGUgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBEZXN0
cnVjdGlvbk1vZGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNw
cAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3Bh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBTdWJzcGFjZTo6
ZGlkUmVtb3ZlQmxvY2soc2l6ZV90KQogewogfQogCi12b2lkIFN1YnNwYWNlOjpkaWRCZWdpblN3
ZWVwaW5nVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKikKK3ZvaWQgU3Vic3BhY2U6OmRp
ZFN3ZWVwVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKikKIHsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3
ICs5OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplQml0cyhz
aXplX3QgbmV3U2l6ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUJsb2NrKHNpemVfdCBi
bG9ja0luZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5Td2VlcGluZ1RvRnJlZUxpc3Qo
TWFya2VkQmxvY2s6OkhhbmRsZSopOworICAgIHZpcnR1YWwgdm9pZCBkaWRTd2VlcFRvRnJlZUxp
c3QoTWFya2VkQmxvY2s6OkhhbmRsZSopOyAvLyBUaGlzIGlzIHRoZSBsYXN0IHRoaW5nIHRoYXQg
c3dlZXAgZG9lcy4KIAogcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZShIZWFwQ2VsbFR5
cGUqLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3MCw3ICsxNzAsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIHRyeUFsbG9jYXRlQ2VsbEhl
bHBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYg
aGVhcCwgc2l6ZV90IHNpemUpCitBTFdBWVNfSU5MSU5FIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFw
JiBoZWFwLCBzaXplX3Qgc2l6ZSkKIHsKICAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVscGVy
PFQ+KGhlYXAsIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUm9wZVN0cmluZ0hlYXBD
ZWxsVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTUm9wZVN0cmlu
Z0hlYXBDZWxsVHlwZS5oIgorCisjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKKyNpbmNs
dWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1JvcGVTdHJpbmdIYXNEZXN0cnVjdG9yRnVuYyB7Citw
dWJsaWM6CisgICAgSlNSb3BlU3RyaW5nSGFzRGVzdHJ1Y3RvckZ1bmMoQml0bWFwPE1hcmtlZEJs
b2NrOjphdG9tc1BlckJsb2NrPiogYml0cykKKyAgICAgICAgOiBtX2JpdHMoYml0cykKKyAgICB7
CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvcigpKHNpemVfdCBp
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYml0cy0+Z2V0KGkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+KiBtX2JpdHM7
Cit9OworCitzdHJ1Y3QgSlNSb3BlU3RyaW5nRGVzdHJveUZ1bmMgeworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAorICAgIHsKKyAgICAg
ICAgSlNSb3BlU3RyaW5nKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxKU1JvcGVTdHJpbmcqPihjZWxs
KTsKKyAgICAgICAgc3RyaW5nLT5KU1JvcGVTdHJpbmc6On5KU1JvcGVTdHJpbmcoKTsKKyAgICB9
Cit9OworCitKU1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGU6OkpTUm9wZVN0cmluZ0hlYXBDZWxsVHlw
ZSgpCisgICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkpTQ2VsbCkpCit7Cit9CisKK0pTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZTo6fkpT
Um9wZVN0cmluZ0hlYXBDZWxsVHlwZSgpCit7Cit9CisKK3ZvaWQgSlNSb3BlU3RyaW5nSGVhcENl
bGxUeXBlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0
KiBmcmVlTGlzdCkKK3sKKyAgICBWTSYgdm0gPSAqaGFuZGxlLnZtKCk7CisgICAgCisgICAgaWYg
KHZtLnJvcGVTdHJpbmdzV2l0aERlc3RydWN0b3JzLmNvbnRhaW5zKCZoYW5kbGUpKSB7CisgICAg
ICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoCisgICAgICAgICAgICBm
cmVlTGlzdCwKKyAgICAgICAgICAgIEpTUm9wZVN0cmluZ0hhc0Rlc3RydWN0b3JGdW5jKHZtLnJv
cGVTdHJpbmdzV2l0aERlc3RydWN0b3JzLmJpdHMoJmhhbmRsZSkpLAorICAgICAgICAgICAgSlNS
b3BlU3RyaW5nRGVzdHJveUZ1bmMoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgaGFuZGxlLmZpbmlzaFN3ZWVwV2l0aE5vRGVzdHJ1Y3RvcnMoZnJlZUxpc3QpOworfQorCit2
b2lkIEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZTo6ZGVzdHJveShWTSYgdm0sIEpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBKU1JvcGVTdHJpbmdEZXN0cm95RnVuYygpKHZtLCBjZWxsKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Um9wZVN0cmluZ0hlYXBDZWxsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIZWFwQ2Vs
bFR5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTUm9wZVN0cmluZ0hlYXBDZWxs
VHlwZSA6IHB1YmxpYyBIZWFwQ2VsbFR5cGUgeworcHVibGljOgorICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgfkpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZSgpOworICAgIAorICAgIHZvaWQgZmluaXNo
U3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAko
cmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKIAorI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC01Myw3ICs1NCw4IEBAIHZv
aWQgSlNSb3BlU3RyaW5nOjpSb3BlQnVpbGRlcjxSZWNvcmRPdmUKIAogdm9pZCBKU1N0cmluZzo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihjZWxs
KS0+SlNTdHJpbmc6On5KU1N0cmluZygpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBzdGF0aWNf
Y2FzdDxKU1N0cmluZyo+KGNlbGwpOworICAgIHN0cmluZy0+SlNTdHJpbmc6On5KU1N0cmluZygp
OwogfQogCiB2b2lkIEpTU3RyaW5nOjpkdW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiBjZWxsLCBQ
cmludFN0cmVhbSYgb3V0KQpAQCAtMTgxLDYgKzE4Myw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpy
ZXNvbHZlUm9wZVRvQXRvbWljU3QKICAgICBpZiAobGVuZ3RoKCkgPiBtYXhMZW5ndGhGb3JPblN0
YWNrUmVzb2x2ZSkgewogICAgICAgICByZXNvbHZlUm9wZShleGVjKTsKICAgICAgICAgbV92YWx1
ZSA9IEF0b21pY1N0cmluZyhtX3ZhbHVlKTsKKyAgICAgICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxl
KGV4ZWMtPnZtKCkpOwogICAgICAgICBzZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJpdCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4OSwxMSArMTkyLDEzIEBAIHZvaWQgSlNS
b3BlU3RyaW5nOjpyZXNvbHZlUm9wZVRvQXRvbWljU3QKICAgICAgICAgTENoYXIgYnVmZmVyW21h
eExlbmd0aEZvck9uU3RhY2tSZXNvbHZlXTsKICAgICAgICAgcmVzb2x2ZVJvcGVJbnRlcm5hbDgo
YnVmZmVyKTsKICAgICAgICAgbV92YWx1ZSA9IEF0b21pY1N0cmluZyhidWZmZXIsIGxlbmd0aCgp
KTsKKyAgICAgICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxlKGV4ZWMtPnZtKCkpOwogICAgICAgICBz
ZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJpdCgpKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBVQ2hhciBidWZmZXJbbWF4TGVuZ3RoRm9yT25TdGFja1Jlc29sdmVdOwogICAgICAgICByZXNv
bHZlUm9wZUludGVybmFsMTYoYnVmZmVyKTsKICAgICAgICAgbV92YWx1ZSA9IEF0b21pY1N0cmlu
ZyhidWZmZXIsIGxlbmd0aCgpKTsKKyAgICAgICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxlKGV4ZWMt
PnZtKCkpOwogICAgICAgICBzZXRJczhCaXQobV92YWx1ZS5pbXBsKCktPmlzOEJpdCgpKTsKICAg
ICB9CiAKQEAgLTIxNiw2ICsyMjEsNyBAQCBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gSlNSb3Bl
U3RyaW5nOjpyCiAgICAgICAgIHJlc29sdmVSb3BlKGV4ZWMpOwogICAgICAgICBpZiAoUmVmUHRy
PEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gQXRvbWljU3RyaW5nSW1w
bDo6bG9va1VwKG1fdmFsdWUuaW1wbCgpKSkgewogICAgICAgICAgICAgbV92YWx1ZSA9ICpleGlz
dGluZ0F0b21pY1N0cmluZzsKKyAgICAgICAgICAgIGRpZEJlY29tZURlc3RydWN0aWJsZShleGVj
LT52bSgpKTsKICAgICAgICAgICAgIHNldElzOEJpdChtX3ZhbHVlLmltcGwoKS0+aXM4Qml0KCkp
OwogICAgICAgICAgICAgY2xlYXJGaWJlcnMoKTsKICAgICAgICAgICAgIHJldHVybiBleGlzdGlu
Z0F0b21pY1N0cmluZzsKQEAgLTIyOCw2ICsyMzQsNyBAQCBSZWZQdHI8QXRvbWljU3RyaW5nSW1w
bD4gSlNSb3BlU3RyaW5nOjpyCiAgICAgICAgIHJlc29sdmVSb3BlSW50ZXJuYWw4KGJ1ZmZlcik7
CiAgICAgICAgIGlmIChSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9taWNTdHJp
bmcgPSBBdG9taWNTdHJpbmdJbXBsOjpsb29rVXAoYnVmZmVyLCBsZW5ndGgoKSkpIHsKICAgICAg
ICAgICAgIG1fdmFsdWUgPSAqZXhpc3RpbmdBdG9taWNTdHJpbmc7CisgICAgICAgICAgICBkaWRC
ZWNvbWVEZXN0cnVjdGlibGUoZXhlYy0+dm0oKSk7CiAgICAgICAgICAgICBzZXRJczhCaXQobV92
YWx1ZS5pbXBsKCktPmlzOEJpdCgpKTsKICAgICAgICAgICAgIGNsZWFyRmliZXJzKCk7CiAgICAg
ICAgICAgICByZXR1cm4gZXhpc3RpbmdBdG9taWNTdHJpbmc7CkBAIC0yMzcsNiArMjQ0LDcgQEAg
UmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IEpTUm9wZVN0cmluZzo6cgogICAgICAgICByZXNvbHZl
Um9wZUludGVybmFsMTYoYnVmZmVyKTsKICAgICAgICAgaWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJ
bXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChidWZm
ZXIsIGxlbmd0aCgpKSkgewogICAgICAgICAgICAgbV92YWx1ZSA9ICpleGlzdGluZ0F0b21pY1N0
cmluZzsKKyAgICAgICAgICAgIGRpZEJlY29tZURlc3RydWN0aWJsZShleGVjLT52bSgpKTsKICAg
ICAgICAgICAgIHNldElzOEJpdChtX3ZhbHVlLmltcGwoKS0+aXM4Qml0KCkpOwogICAgICAgICAg
ICAgY2xlYXJGaWJlcnMoKTsKICAgICAgICAgICAgIHJldHVybiBleGlzdGluZ0F0b21pY1N0cmlu
ZzsKQEAgLTI1Myw2ICsyNjEsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGUoRXhl
Y1N0YXRlCiAgICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsKICAgICAgICAgQVNTRVJUKCFzdWJzdHJp
bmdCYXNlKCktPmlzUm9wZSgpKTsKICAgICAgICAgbV92YWx1ZSA9IHN1YnN0cmluZ0Jhc2UoKS0+
bV92YWx1ZS5zdWJzdHJpbmdTaGFyaW5nSW1wbChzdWJzdHJpbmdPZmZzZXQoKSwgbGVuZ3RoKCkp
OworICAgICAgICBkaWRCZWNvbWVEZXN0cnVjdGlibGUoZXhlYy0+dm0oKSk7CiAgICAgICAgIHN1
YnN0cmluZ0Jhc2UoKS5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjYyLDYg
KzI3MSw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZShFeGVjU3RhdGUKICAgICAg
ICAgaWYgKGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
bGVuZ3RoKCksIGJ1ZmZlcikpIHsKICAgICAgICAgICAgIEhlYXA6OmhlYXAodGhpcyktPnJlcG9y
dEV4dHJhTWVtb3J5QWxsb2NhdGVkKG5ld0ltcGwtPmNvc3QoKSk7CiAgICAgICAgICAgICBtX3Zh
bHVlID0gV1RGTW92ZShuZXdJbXBsKTsKKyAgICAgICAgICAgIGRpZEJlY29tZURlc3RydWN0aWJs
ZShleGVjLT52bSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG91dE9mTWVtb3J5
KGV4ZWMpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc2LDYgKzI4Niw3IEBAIHZvaWQgSlNS
b3BlU3RyaW5nOjpyZXNvbHZlUm9wZShFeGVjU3RhdGUKICAgICBpZiAoYXV0byBuZXdJbXBsID0g
U3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgoKSwgYnVmZmVyKSkgewog
ICAgICAgICBIZWFwOjpoZWFwKHRoaXMpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChuZXdJ
bXBsLT5jb3N0KCkpOwogICAgICAgICBtX3ZhbHVlID0gV1RGTW92ZShuZXdJbXBsKTsKKyAgICAg
ICAgZGlkQmVjb21lRGVzdHJ1Y3RpYmxlKGV4ZWMtPnZtKCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIG91dE9mTWVtb3J5KGV4ZWMpOwogICAgICAgICByZXR1cm47CkBAIC0zNzYsNiArMzg3LDEx
IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVNsb3dDYXNlKFUKICAgICBBU1NFUlQo
YnVmZmVyID09IHBvc2l0aW9uKTsKIH0KIAordm9pZCBKU1JvcGVTdHJpbmc6OmRpZEJlY29tZURl
c3RydWN0aWJsZShWTSYgdm0pIGNvbnN0Cit7CisgICAgdm0ucm9wZVN0cmluZ3NXaXRoRGVzdHJ1
Y3RvcnMuYWRkKHRoaXMpOworfQorCiB2b2lkIEpTUm9wZVN0cmluZzo6b3V0T2ZNZW1vcnkoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDEwICs4Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
ICAgIAotICAgIC8vIFdlIHNwZWNpYWxpemUgdGhlIHN0cmluZyBzdWJzcGFjZSB0byBnZXQgdGhl
IGZhc3Rlc3QgcG9zc2libGUgc3dlZXAuIFRoaXMgd291bGRuJ3QgYmUKLSAgICAvLyBuZWNlc3Nh
cnkgaWYgSlNTdHJpbmcgZGlkbid0IGhhdmUgYSBkZXN0cnVjdG9yLgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lPgotICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICByZXR1cm4gJnZtLnN0cmluZ1NwYWNlOwogICAgIH0KQEAgLTE5MiwxMSArMTkwLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgSXM4Qml0ID0gMXUKICAgICB9OwogCisgICAgYm9vbCBpc1JvcGUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmlzTnVsbCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBm
cmllbmQgY2xhc3MgSlNWYWx1ZTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxT
bG93Q2FzZShFeGVjU3RhdGUqLCBKU1N0cmluZyogb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgaXNS
b3BlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5pc051bGwoKTsgfQogICAgIGJvb2wgaXNTdWJz
dHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3Mg
JiBJczhCaXQ7IH0KICAgICB2b2lkIHNldElzOEJpdChib29sIGZsYWcpIGNvbnN0CkBAIC0yNDAs
NiArMjM5LDEyIEBAIGNsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBKU1N0cmkKICAg
ICBmcmllbmQgSlNSb3BlU3RyaW5nKiBqc1N0cmluZ0J1aWxkZXIoVk0qKTsKIAogcHVibGljOgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5yb3BlU3RyaW5nU3BhY2U7Cisg
ICAgfQorICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBPdmVyZmxvd0hhbmRsZXIgPSBDcmFzaE9u
T3ZlcmZsb3c+CiAgICAgY2xhc3MgUm9wZUJ1aWxkZXIgOiBwdWJsaWMgT3ZlcmZsb3dIYW5kbGVy
IHsKICAgICBwdWJsaWM6CkBAIC0yOTIsMjggKzI5NywyOCBAQCBwcml2YXRlOgogICAgIHsKICAg
ICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0
cmluZyogczIpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVCghc3VtT3ZlcmZsb3dzPGludDMyX3Q+KHMxLT5s
ZW5ndGgoKSwgczItPmxlbmd0aCgpKSk7CiAgICAgICAgIHNldExlbmd0aChzMS0+bGVuZ3RoKCkg
KyBzMi0+bGVuZ3RoKCkpOwogICAgICAgICBzZXRJczhCaXQoczEtPmlzOEJpdCgpICYmIHMyLT5p
czhCaXQoKSk7CiAgICAgICAgIHNldElzU3Vic3RyaW5nKGZhbHNlKTsKLSAgICAgICAgZmliZXIo
MCkuc2V0KHZtLCB0aGlzLCBzMSk7Ci0gICAgICAgIGZpYmVyKDEpLnNldCh2bSwgdGhpcywgczIp
OworICAgICAgICBmaWJlcigwKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHMxKTsKKyAgICAgICAg
ZmliZXIoMSkuc2V0V2l0aG91dFdyaXRlQmFycmllcihzMik7CiAgICAgICAgIGZpYmVyKDIpLmNs
ZWFyKCk7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTU3RyaW5n
KiBzMSwgSlNTdHJpbmcqIHMyLCBKU1N0cmluZyogczMpCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3Ry
aW5nKiBzMykKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAg
ICAgQVNTRVJUKCFzdW1PdmVyZmxvd3M8aW50MzJfdD4oczEtPmxlbmd0aCgpLCBzMi0+bGVuZ3Ro
KCksIHMzLT5sZW5ndGgoKSkpOwogICAgICAgICBzZXRMZW5ndGgoczEtPmxlbmd0aCgpICsgczIt
Pmxlbmd0aCgpICsgczMtPmxlbmd0aCgpKTsKICAgICAgICAgc2V0SXM4Qml0KHMxLT5pczhCaXQo
KSAmJiBzMi0+aXM4Qml0KCkgJiYgIHMzLT5pczhCaXQoKSk7CiAgICAgICAgIHNldElzU3Vic3Ry
aW5nKGZhbHNlKTsKLSAgICAgICAgZmliZXIoMCkuc2V0KHZtLCB0aGlzLCBzMSk7Ci0gICAgICAg
IGZpYmVyKDEpLnNldCh2bSwgdGhpcywgczIpOwotICAgICAgICBmaWJlcigyKS5zZXQodm0sIHRo
aXMsIHMzKTsKKyAgICAgICAgZmliZXIoMCkuc2V0V2l0aG91dFdyaXRlQmFycmllcihzMSk7Cisg
ICAgICAgIGZpYmVyKDEpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoczIpOworICAgICAgICBmaWJl
cigyKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHMzKTsKICAgICB9CiAKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogYmFzZSwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC00MDIsMTMgKzQwNywxMyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID0gMzsK
IAogcHJpdmF0ZToKLSAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIEpTU3RyaW5n
KiBzMSwgSlNTdHJpbmcqIHMyKQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTU3RyaW5nKiBj
cmVhdGUoVk0mIHZtLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKICAgICB7CiAgICAgICAg
IEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNS
b3BlU3RyaW5nPih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtKTsKICAgICAgICAgbmV3U3RyaW5n
LT5maW5pc2hDcmVhdGlvbih2bSwgczEsIHMyKTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsK
ICAgICB9Ci0gICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoVk0mIHZtLCBKU1N0cmluZyogczEs
IEpTU3RyaW5nKiBzMiwgSlNTdHJpbmcqIHMzKQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpT
U3RyaW5nKiBjcmVhdGUoVk0mIHZtLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMiwgSlNTdHJp
bmcqIHMzKQogICAgIHsKICAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmco
dm0pOwogICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtLCBzMSwgczIsIHMzKTsK
QEAgLTQzMSw3ICs0MzYsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGaWJlcnMoKSBjb25z
dDsKICAgICBTdHJpbmdWaWV3IHVuc2FmZVZpZXcoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgU3Ry
aW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIHZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhFeGVj
U3RhdGUqKSBjb25zdDsKLQorICAgIAorICAgIHZvaWQgZGlkQmVjb21lRGVzdHJ1Y3RpYmxlKFZN
JikgY29uc3Q7CisgICAgCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU1N0cmluZz4mIGZpYmVyKHVu
c2lnbmVkIGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoIWlzU3Vic3RyaW5nKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdIZWFwQ2VsbFR5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
SGVhcENlbGxUeXBlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmdIZWFwQ2VsbFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw4IEBAIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IEpTU3RyaW5nRGVzdHJveUZ1bmMg
ewogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBj
b25zdAogICAgIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihjZWxsKS0+SlNTdHJp
bmc6On5KU1N0cmluZygpOworICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gc3RhdGljX2Nhc3Q8
SlNTdHJpbmcqPihjZWxsKTsKKyAgICAgICAgc3RyaW5nLT5KU1N0cmluZzo6fkpTU3RyaW5nKCk7
CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlLmgiCiAj
aW5jbHVkZSAiSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgogI2luY2x1
ZGUgIkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaGVy
LmgiCkBAIC0yNTcsNiArMjU4LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlKQogICAgICwgY2VsbERhbmdlcm91c0JpdHNIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3Vu
aXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGwpKSkKICAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUo
c3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1
Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKICAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZShzdGQ6
Om1ha2VfdW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQorICAgICwgcm9wZVN0cmluZ0hl
YXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTUm9wZVN0cmluZ0hlYXBDZWxsVHlwZT4oKSkK
ICAgICAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQogICAgICwgc2VnbWVudGVkVmFyaWFi
bGVPYmplY3RIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0SGVhcENlbGxUeXBlPigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTI2OCw3
ICsyNzAsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAg
LCBjZWxsRGFuZ2Vyb3VzQml0c1NwYWNlKCJKU0NlbGwgRGFuZ2Vyb3VzQml0cyIsIGhlYXAsIGNl
bGxEYW5nZXJvdXNCaXRzSGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdl
dCgpKQogICAgICwganNWYWx1ZUdpZ2FjYWdlQ2VsbFNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEpT
Q2VsbCIsIGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3IuZ2V0KCkpCiAgICAgLCBkZXN0cnVjdGlibGVDZWxsU3BhY2UoIkRlc3Ry
dWN0aWJsZSBKU0NlbGwiLCBoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQotICAgICwgc3RyaW5nU3BhY2UoIkpTU3RyaW5n
IiwgaGVhcCwgc3RyaW5nSGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdl
dCgpKQogICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IiwgaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9j
QWxsb2NhdG9yLmdldCgpKQogICAgICwgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0U3Bh
Y2UoIkVhZ2VybHkgU3dlcHQgSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCBkZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiAg
ICAgLCBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlKCJKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0U3BhY2UiLCBoZWFwLCBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKQEAgLTMwNSw3ICszMDYsOSBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBwcm9wZXJ0eVRhYmxlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgUHJvcGVydHlUYWJsZSkKICAgICAsIHByb3h5UmV2b2tlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBQcm94eVJl
dm9rZSkKICAgICAsIHJlZ0V4cENvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHBDb25zdHJ1Y3Rv
cikKKyAgICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCByb3BlU3Ry
aW5nSGVhcENlbGxUeXBlLmdldCgpLCBKU1JvcGVTdHJpbmcpCiAgICAgLCBzdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbikKKyAg
ICAsIHN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIHN0cmluZ0hlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNTdHJpbmcpCiAgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cnVj
dHVyZVJhcmVEYXRhKQogICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlKQogICAgICwg
d2Vha1NldFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0KQpAQCAtMzE5LDYgKzMyMiw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQog
ICAgICwgaW5mZXJyZWRUeXBlc1dpdGhGaW5hbGl6ZXJzKGluZmVycmVkVHlwZVNwYWNlKQogICAg
ICwgaW5mZXJyZWRWYWx1ZXNXaXRoRmluYWxpemVycyhpbmZlcnJlZFZhbHVlU3BhY2UpCisgICAg
LCByb3BlU3RyaW5nc1dpdGhEZXN0cnVjdG9ycyhyb3BlU3RyaW5nU3BhY2UpCiAgICAgLCBldmFs
Q29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgRXZhbENvZGVCbG9jaykKICAgICAsIGZ1bmN0aW9uQ29kZUJsb2Nr
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgRnVuY3Rpb25Db2RlQmxvY2spCiAgICAgLCBtb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw3IEBAIGNsYXNzIEpTQ3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb247CiBjbGFzcyBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CitjbGFzcyBK
U1JvcGVTdHJpbmdIZWFwQ2VsbFR5cGU7CiBjbGFzcyBKU1J1bkxvb3BUaW1lcjsKIGNsYXNzIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGU7CiBjbGFzcyBKU1N0cmluZ0hlYXBD
ZWxsVHlwZTsKQEAgLTMwOSw2ICszMTAsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEhlYXBDZWxsVHlwZT4gY2VsbERhbmdlcm91c0JpdHNIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+IHN0cmluZ0hlYXBDZWxsVHlw
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNSb3BlU3RyaW5nSGVhcENlbGxUeXBlPiByb3BlU3Ry
aW5nSGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZT4gZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlPiBzZWdtZW50
ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkBA
IC0zNDEsNyArMzQzLDYgQEAgcHVibGljOgogICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbERhbmdl
cm91c0JpdHNTcGFjZTsKICAgICBDb21wbGV0ZVN1YnNwYWNlIGpzVmFsdWVHaWdhY2FnZUNlbGxT
cGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBoYXZl
IHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVudHM7
IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFsdWVT
dHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODI4NTgKICAgICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZUNlbGxTcGFjZTsKLSAg
ICBDb21wbGV0ZVN1YnNwYWNlIHN0cmluZ1NwYWNlOwogICAgIENvbXBsZXRlU3Vic3BhY2UgZGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CiAgICAgQ29tcGxldGVTdWJzcGFjZSBlYWdlcmx5U3dlcHRE
ZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKICAgICBDb21wbGV0ZVN1YnNwYWNlIHNlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0U3BhY2U7CkBAIC0zNzksNyArMzgwLDkgQEAgcHVibGljOgogICAgIElzb1N1
YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBwcm94eVJldm9rZVNw
YWNlOwogICAgIElzb1N1YnNwYWNlIHJlZ0V4cENvbnN0cnVjdG9yU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2Ugcm9wZVN0cmluZ1NwYWNlOwogICAgIElzb1N1YnNwYWNlIHN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOwogICAgIElzb1N1
YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJl
U3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugd2Vha1NldFNwYWNlOwpAQCAtMzk0LDYgKzM5Nyw3IEBA
IHB1YmxpYzoKICAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZp
bmFsaXplcnM7CiAgICAgSXNvQ2VsbFNldCBpbmZlcnJlZFR5cGVzV2l0aEZpbmFsaXplcnM7CiAg
ICAgSXNvQ2VsbFNldCBpbmZlcnJlZFZhbHVlc1dpdGhGaW5hbGl6ZXJzOworICAgIElzb0NlbGxT
ZXQgcm9wZVN0cmluZ3NXaXRoRGVzdHJ1Y3RvcnM7CiAgICAgCiAgICAgc3RydWN0IFNwYWNlQW5k
RmluYWxpemVyU2V0IHsKICAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7Cg==
</data>
<flag name="review"
          id="359585"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>