<?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>36568</bug_id>
          
          <creation_ts>2010-03-24 18:07:45 -0700</creation_ts>
          <short_desc>Support BlobBuilder defined in FileAPI/FileWriter</short_desc>
          <delta_ts>2010-06-22 22:07:35 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          <dependson>36903</dependson>
    
    <dependson>40593</dependson>
          <blocked>36567</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>ericu</cc>
    
    <cc>fishd</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>jianli</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>203712</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-03-24 18:07:45 -0700</bug_when>
    <thetext>http://dev.w3.org/2009/dap/file-system/file-writer.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206108</commentid>
    <comment_count>1</comment_count>
      <attachid>52068</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-03-30 12:19:43 -0700</bug_when>
    <thetext>Created attachment 52068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206115</commentid>
    <comment_count>2</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-03-30 12:31:43 -0700</bug_when>
    <thetext>Uploaded the first patch for adding BlobBuilder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206123</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-30 12:44:11 -0700</bug_when>
    <thetext>Why does Blob get a stringValue accessor in debug builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206144</commentid>
    <comment_count>4</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-03-30 13:12:29 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why does Blob get a stringValue accessor in debug builds?

I wanted to have a handy way to test it.  I&apos;ll get rid of it if it shouldn&apos;t be there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206172</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-30 14:07:09 -0700</bug_when>
    <thetext>Well, we run the layout tests both in debug and release mode, so whatever we do to support testing shouldn&apos;t be debug only.  Perhaps there should be a layoutTestController method for this, or maybe the web platform should just have a way to read from a Blob :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206237</commentid>
    <comment_count>6</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-03-30 16:12:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
Right.  Another option I came up with was to use xhr.send(blob) (which sends a WebString in this patch) and let the server script check the content.  This is also handy but how we should handle xhr.send(blob) for blobs created by BlobBuilder is a bit unclear for now.  How do you think?

(By the way I&apos;m getting a qt build error... does anyone know how I can fix it?  Thanks.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206319</commentid>
    <comment_count>7</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-03-30 18:40:05 -0700</bug_when>
    <thetext>A note for me: need to merge with this one https://bugs.webkit.org/show_bug.cgi?id=36678</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206364</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-30 22:30:34 -0700</bug_when>
    <thetext>&gt; Right.  Another option I came up with was to use xhr.send(blob) (which sends a
&gt; WebString in this patch) and let the server script check the content.  This is
&gt; also handy but how we should handle xhr.send(blob) for blobs created by
&gt; BlobBuilder is a bit unclear for now.  How do you think?

Using xhr.send(blob) sounds like a good way to solve the testing problem.  It would mean having to make these tests be http tests, but I guess that&apos;s OK.  It is nice when layout tests can also run in a normal browser using normal features of the web platform.

Under http/tests, you should see perl and php scripts that are used to provide for dynamic content.  You can probably just create a script like that which will echo the HTTP request body.  There may already be a script in http/tests that does that :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206687</commentid>
    <comment_count>9</comment_count>
      <attachid>52206</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-03-31 13:22:02 -0700</bug_when>
    <thetext>Created attachment 52206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206693</commentid>
    <comment_count>10</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-03-31 13:33:15 -0700</bug_when>
    <thetext>Attachment 52206 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1646066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206710</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-31 13:56:54 -0700</bug_when>
    <thetext>Attachment 52206 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1552140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206716</commentid>
    <comment_count>12</comment_count>
      <attachid>52206</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-03-31 14:21:13 -0700</bug_when>
    <thetext>Comment on attachment 52206
Patch

r-, due to the size of the patch.

It is very hard to review 80Kb patch, and if the review happens, the quality of it usually suffers. We ask contributors to come up with smaller patches, especially if it is relatively easy to do.

In this case, it&apos;s possible to structure the work like this:
1. Have an uber-bug which says &quot;Implement BlobBuilder&quot; and serves as umbrella for other bugs/patches.
2. Optionally attach the uber-patch with prototype into that bug.
3. Split work - in this case, it could be implementation of internal implementation objects, like FileBlob, then JSC bindings with a test or two, then v8 bindings, then more tests.
4. Have separate bugs with those smaller patches, referrign to the umbrella bug. Normally, we have 1 patch per bug.

I myself didn&apos;t appreciate much the &apos;smaller patches&apos; concept until I became a reviewer. It takes about the same time to carefully review the patch as it would take to write it. In the case of a big patch, the process repeats on every iteration. It is really better and faster to come up with smaller patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206726</commentid>
    <comment_count>13</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-03-31 14:40:29 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 52206 [details])
&gt; r-, due to the size of the patch.

Got it, it was still too big.  I will open more separate bugs and split the patch, making this bug as umbrella for them.  Thanks for your advice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241661</commentid>
    <comment_count>14</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-22 22:07:35 -0700</bug_when>
    <thetext>Closing as it&apos;s been added.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52068</attachid>
            <date>2010-03-30 12:19:43 -0700</date>
            <delta_ts>2010-03-31 13:21:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36568-20100330121942.patch</filename>
            <type>text/plain</type>
            <size>80874</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YTRmOTIzLi5jMzFhNjY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMt
MzAgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgQmxvYkJ1aWxkZXIgZGVm
aW5lZCBpbiBGaWxlQVBJL0ZpbGVXcml0ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNjU2OAorCisgICAgICAgICogZmFzdC9odG1sL2Jsb2ItYnVp
bGRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaHRtbC9ibG9iLWJ1aWxk
ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9ibG9iLWJ1
aWxkZXIuanM6IEFkZGVkLgorICAgICAgICAodGVzdEJsb2IpOgorCiAyMDEwLTAzLTMwICBEYXZp
ZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IEJhcnRoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Jsb2ItYnVpbGRlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvYmxvYi1idWlsZGVyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzBiNmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Jsb2ItYnVpbGRlci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzMiBAQAorVmFyaW91cyB0ZXN0cyBmb3IgdGhlIEJsb2JCdWlsZGVyIGFu
ZCBCbG9iLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworKiBCbG9iQnVpbGRlci5h
cHBlbmQoc3RyaW5nKQorUEFTUyBibG9iMS5zaXplIGlzIHN0cmluZ0EubGVuZ3RoCitQQVNTIGJs
b2IxLnN0cmluZ1ZhbHVlIGlzIHN0cmluZ0EKK1BBU1MgYmxvYjIuc2l6ZSBpcyBleHBlY3RlZC5s
ZW5ndGgKK1BBU1MgYmxvYjIuc3RyaW5nVmFsdWUgaXMgZXhwZWN0ZWQKKyogQmxvYkJ1aWxkZXIu
YXBwZW5kKGJsb2IpCitQQVNTIGJsb2IzLnNpemUgaXMgZXhwZWN0ZWQubGVuZ3RoCitQQVNTIGJs
b2IzLnN0cmluZ1ZhbHVlIGlzIGV4cGVjdGVkCisqIEJsb2JCdWlsZGVyLmFwcGVuZChtaXhlZCkK
K1BBU1MgYmxvYjQuc2l6ZSBpcyBleHBlY3RlZC5sZW5ndGgKK1BBU1MgYmxvYjQuc3RyaW5nVmFs
dWUgaXMgZXhwZWN0ZWQKK1BBU1MgYmxvYjUuc2l6ZSBpcyBleHBlY3RlZC5sZW5ndGgKK1BBU1Mg
YmxvYjUuc3RyaW5nVmFsdWUgaXMgZXhwZWN0ZWQKKyogQ29tYmluZWRCbG9iLnNsaWNlKCkKK1BB
U1MgYmxvYjYuc2l6ZSBpcyBzbGljZUV4cGVjdGVkMS5sZW5ndGgKK1BBU1MgYmxvYjYuc3RyaW5n
VmFsdWUgaXMgc2xpY2VFeHBlY3RlZDEKK1BBU1MgYmxvYjcuc2l6ZSBpcyBzbGljZUV4cGVjdGVk
Mi5sZW5ndGgKK1BBU1MgYmxvYjcuc3RyaW5nVmFsdWUgaXMgc2xpY2VFeHBlY3RlZDIKKyogc2xp
Y2Ugb2Ygc2xpY2UKK1BBU1MgYmxvYjguc2l6ZSBpcyBzbGljZUV4cGVjdGVkMS5sZW5ndGgKK1BB
U1MgYmxvYjguc3RyaW5nVmFsdWUgaXMgc2xpY2VFeHBlY3RlZDEKK1BBU1MgYmxvYjkuc2l6ZSBp
cyBzbGljZUV4cGVjdGVkMi5sZW5ndGgKK1BBU1MgYmxvYjkuc3RyaW5nVmFsdWUgaXMgc2xpY2VF
eHBlY3RlZDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvYmxvYi1idWlsZGVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvYmxvYi1idWlsZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ2ZWQ4NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvaHRtbC9ibG9iLWJ1aWxkZXIuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9ibG9iLWJ1aWxkZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMvYmxvYi1i
dWlsZGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9odG1sL3NjcmlwdC10ZXN0cy9ibG9iLWJ1aWxk
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFkYjdiNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9zY3JpcHQtdGVzdHMvYmxvYi1idWls
ZGVyLmpzCkBAIC0wLDAgKzEsNjAgQEAKK2Rlc2NyaXB0aW9uKCdWYXJpb3VzIHRlc3RzIGZvciB0
aGUgQmxvYkJ1aWxkZXIgYW5kIEJsb2IuJyk7CisKK2Z1bmN0aW9uIHRlc3RCbG9iKGJsb2IsIGV4
cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoYmxvYiArICcuc2l6ZScsIGV4cGVjdGVkICsgJy5sZW5n
dGgnKTsKKyAgICBpZiAoc3RyaW5nVmFsdWVTdXBwb3J0ZWQpIHNob3VsZEJlKGJsb2IgKyAnLnN0
cmluZ1ZhbHVlJywgZXhwZWN0ZWQpOworfQorCit2YXIgc3RyaW5nQSA9ICdBMTIzNDU2N3wnOwor
dmFyIHN0cmluZ0IgPSAnQjEyMzQ1fCc7Cit2YXIgc3RyaW5nQyA9ICdDMTIzNDU2Nzg5MDF8JzsK
KwordmFyIGJiID0gbmV3IEJsb2JCdWlsZGVyKCk7Cit2YXIgc3RyaW5nVmFsdWVTdXBwb3J0ZWQg
PSB0eXBlb2YgYmIuZ2V0QmxvYigpLnN0cmluZ1ZhbHVlICE9ICJ1bmRlZmluZWQiOworCitkZWJ1
ZygnKiBCbG9iQnVpbGRlci5hcHBlbmQoc3RyaW5nKScpOworYmIuYXBwZW5kKHN0cmluZ0EpOwor
dmFyIGJsb2IxID0gYmIuZ2V0QmxvYigpOwordGVzdEJsb2IoJ2Jsb2IxJywgJ3N0cmluZ0EnKTsK
KworYmIuYXBwZW5kKHN0cmluZ0IpOwordmFyIGJsb2IyID0gYmIuZ2V0QmxvYigpOwordmFyIGV4
cGVjdGVkID0gc3RyaW5nQSArIHN0cmluZ0I7Cit0ZXN0QmxvYignYmxvYjInLCAnZXhwZWN0ZWQn
KTsKKworZGVidWcoJyogQmxvYkJ1aWxkZXIuYXBwZW5kKGJsb2IpJyk7CitiYi5hcHBlbmQoYmxv
YjEpOwordmFyIGJsb2IzID0gYmIuZ2V0QmxvYigpOworZXhwZWN0ZWQgKz0gc3RyaW5nQTsKK3Rl
c3RCbG9iKCdibG9iMycsICdleHBlY3RlZCcpOworCitkZWJ1ZygnKiBCbG9iQnVpbGRlci5hcHBl
bmQobWl4ZWQpJyk7CitiYi5hcHBlbmQoc3RyaW5nQyk7Cit2YXIgYmxvYjQgPSBiYi5nZXRCbG9i
KCk7CitleHBlY3RlZCArPSBzdHJpbmdDOwordGVzdEJsb2IoJ2Jsb2I0JywgJ2V4cGVjdGVkJyk7
CisKK2JiLmFwcGVuZChibG9iMyk7Cit2YXIgYmxvYjUgPSBiYi5nZXRCbG9iKCk7CitleHBlY3Rl
ZCA9IHN0cmluZ0EgKyBzdHJpbmdCICsgc3RyaW5nQSArIHN0cmluZ0MgKyBzdHJpbmdBICsgc3Ry
aW5nQiArIHN0cmluZ0E7Cit0ZXN0QmxvYignYmxvYjUnLCAnZXhwZWN0ZWQnKTsKKworZGVidWco
JyogQ29tYmluZWRCbG9iLnNsaWNlKCknKTsKK3ZhciBibG9iNiA9IGJsb2I1LnNsaWNlKDMsIDEy
KTsKK3ZhciBzbGljZUV4cGVjdGVkMSA9IGV4cGVjdGVkLnN1YnN0cigzLCAxMik7Cit0ZXN0Qmxv
YignYmxvYjYnLCAnc2xpY2VFeHBlY3RlZDEnKTsKKwordmFyIGJsb2I3ID0gYmxvYjUuc2xpY2Uo
MTMsIDQwKTsKK3ZhciBzbGljZUV4cGVjdGVkMiA9IGV4cGVjdGVkLnN1YnN0cigxMywgNDApOwor
dGVzdEJsb2IoJ2Jsb2I3JywgJ3NsaWNlRXhwZWN0ZWQyJyk7CisKK2RlYnVnKCcqIHNsaWNlIG9m
IHNsaWNlJyk7Cit2YXIgYmxvYjggPSBibG9iNi5zbGljZSgyLCA5KTsKK3NsaWNlRXhwZWN0ZWQx
ID0gc2xpY2VFeHBlY3RlZDEuc3Vic3RyKDIsIDkpOwordGVzdEJsb2IoJ2Jsb2I4JywgJ3NsaWNl
RXhwZWN0ZWQxJyk7CisKK3ZhciBibG9iOSA9IGJsb2I3LnNsaWNlKDUsIDE3KTsKK3NsaWNlRXhw
ZWN0ZWQyID0gc2xpY2VFeHBlY3RlZDIuc3Vic3RyKDUsIDE3KTsKK3Rlc3RCbG9iKCdibG9iOScs
ICdzbGljZUV4cGVjdGVkMicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1rIGIvV2ViQ29y
ZS9BbmRyb2lkLmRlcml2ZWQuanNjYmluZGluZ3MubWsKaW5kZXggYjNjNTMxYy4uMTQxMjY2YyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQuanNjYmluZGluZ3MubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQuanNjYmluZGluZ3MubWsKQEAgLTE1Myw2ICsxNTMsNyBA
QCAkKHBhdHN1YnN0ICUuaCwlLmNwcCwkKEdFTikpOiAkKGludGVybWVkaWF0ZXMpL2RvbS8lLmNw
cCA6ICQoaW50ZXJtZWRpYXRlcykvZG9tLwogIyBIVE1MCiBHRU4gOj0gXAogICAgICQoaW50ZXJt
ZWRpYXRlcykvaHRtbC9KU0Jsb2IuaCBcCisgICAgJChpbnRlcm1lZGlhdGVzKS9odG1sL0pTQmxv
YkJ1aWxkZXIuaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9odG1sL0pTRE9NRm9ybURhdGEuaCBc
CiAgICAgJChpbnRlcm1lZGlhdGVzKS9odG1sL0pTRGF0YUdyaWRDb2x1bW4uaCBcCiAgICAgJChp
bnRlcm1lZGlhdGVzKS9odG1sL0pTRGF0YUdyaWRDb2x1bW5MaXN0LmggXApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tayBiL1dlYkNvcmUvQW5kcm9pZC5k
ZXJpdmVkLnY4YmluZGluZ3MubWsKaW5kZXggZjZhNWVmZC4uYWRjYjczOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5taworKysgYi9XZWJDb3JlL0FuZHJv
aWQuZGVyaXZlZC52OGJpbmRpbmdzLm1rCkBAIC0xMzUsNiArMTM1LDcgQEAgJChwYXRzdWJzdCAl
LmgsJS5jcHAsJChHRU4pKTogJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy8lLmNwcCA6ICQoaW50
ZXJtZWRpYXRlcykKICMgSFRNTAogR0VOIDo9IFwKICAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRp
bmdzL1Y4QmxvYi5oIFwKKyAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4QmxvYkJ1aWxk
ZXIuaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOERhdGFHcmlkQ29sdW1uLmgg
XAogICAgICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhEYXRhR3JpZENvbHVtbkxpc3QuaCBc
CiAgICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOEZpbGUuaCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0FuZHJvaWQubWsgYi9XZWJDb3JlL0FuZHJvaWQubWsKaW5kZXggOGZmZDc2Ny4uZGNk
OTRjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9BbmRyb2lkLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9p
ZC5tawpAQCAtMjM4LDYgKzIzOCw4IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19G
SUxFUykgXAogCWhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5SXRlbUFuZHJvaWQuY3BwIFwKIAlcCiAJ
aHRtbC9CbG9iLmNwcCBcCisJaHRtbC9CbG9iQnVpbGRlci5jcHAgXAorCWh0bWwvQnl0ZVN0b3Jl
LmNwcCBcCiAJaHRtbC9Db2xsZWN0aW9uQ2FjaGUuY3BwIFwKIAlodG1sL0RPTUZvcm1EYXRhLmNw
cCBcCiAJaHRtbC9GaWxlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQudjhiaW5k
aW5ncy5tayBiL1dlYkNvcmUvQW5kcm9pZC52OGJpbmRpbmdzLm1rCmluZGV4IDUxMmI2Y2UuLjMz
YzU0YWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC52OGJpbmRpbmdzLm1rCisrKyBiL1dl
YkNvcmUvQW5kcm9pZC52OGJpbmRpbmdzLm1rCkBAIC04Niw2ICs4Niw3IEBAIExPQ0FMX1NSQ19G
SUxFUyArPSBcCiAJXAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF0dHJDdXN0b20uY3BwIFwKIAli
aW5kaW5ncy92OC9jdXN0b20vVjhCYXJJbmZvQ3VzdG9tLmNwcCBcCisJYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QmxvYkJ1aWxkZXJDdXN0b20uY3BwIFwKIAliaW5kaW5ncy92OC9jdXN0b20vVjhDU1NS
dWxlQ3VzdG9tLmNwcCBcCiAJYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHAgXAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlU2hlZXRDdXN0b20u
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYmU5NmQ0OS4uOTg0NGU0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzkgQEAKKzIwMTAtMDMtMzAgIEtpbnVr
byBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgQmxvYkJ1aWxkZXIgZGVmaW5lZCBpbiBG
aWxlQVBJL0ZpbGVXcml0ZXIgZHJhZnQuCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDkv
ZGFwL2ZpbGUtc3lzdGVtL2ZpbGUtd3JpdGVyLmh0bWwKKyAgICAgICAgQWRkIEJsb2JCdWlsZGVy
IGFuZCBCeXRlU3RvcmUgdGhhdCBzdG9yZXMgYWN0dWFsIGJ5dGUgYXJyYXkgZGF0YQorICAgICAg
ICBmb3IgYSBub24tZmlsZSBiYXNlZCBibG9iLiAgVGhlIHBhdGNoIGFsc28gYWRkcyB2OCBhbmQg
anNjCisgICAgICAgIGJpbmRpbmdzIGZvciBCbG9iQnVpbGRlci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTY4CisKKyAgICAgICAgVGVzdDogZmFz
dC9odG1sL2Jsb2ItYnVpbGRlci5odG1sCisKKyAgICAgICAgKiBBbmRyb2lkLmRlcml2ZWQuanNj
YmluZGluZ3MubWs6CisgICAgICAgICogQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWs6Cisg
ICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBBbmRyb2lkLnY4YmluZGluZ3MubWs6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
QmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcjo6SlNCbG9iQnVpbGRlckNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnN0cnVjdEJsb2JCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
QmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNCbG9iQnVpbGRlckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNCbG9iQnVpbGRlckNvbnN0cnVjdG9yOjpjbGFzc0luZm8pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQmxvYkJ1aWxkZXJDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkpTQmxvYkJ1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmJsb2JCdWls
ZGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQnVpbGRlckN1c3RvbS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VjhCbG9iQnVpbGRlcjo6Y29uc3RydWN0b3JD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOEJsb2JCdWlsZGVyOjphcHBlbmRDYWxsYmFj
ayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoK
KyAgICAgICAgKiBodG1sL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6c2xpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZUJsb2I6OkZpbGVCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVCbG9iOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVCbG9iOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVCbG9iOjpyZWFkRGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVCbG9iOjpzbmFw
c2hvdEVuZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVCbG9iOjpzbGljZUludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFCbG9iOjpEYXRhQmxvYik6CisgICAgICAgIChX
ZWJDb3JlOjpDb21iaW5lZEJsb2I6OkNvbWJpbmVkQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpD
b21iaW5lZEJsb2I6OmFwcGVuZEJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Q29tYmluZWRCbG9i
OjphcHBlbmRCbG9iTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21iaW5lZEJsb2I6OnJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tYmluZWRCbG9iOjpyZWFkRGlyZWN0KToKKyAgICAgICAg
KiBodG1sL0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmlzVXNpbmdGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJsb2I6OmlzVXNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJs
b2I6OmlzQ29tYmluZWQpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6dG9GaWxlQmxvYik6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iOjp0b0RhdGFCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkJs
b2I6OnRvQ29tYmluZWRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJsb2I6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpz
bmFwc2hvdEVuZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6Om1vZGlmaWNhdGlv
blRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUJsb2I6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlQmxvYjo6cGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQmxvYjo6aXNV
c2luZ0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUJsb2I6OnRvRmlsZUJsb2IpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZUJsb2I6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVC
bG9iOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUJsb2I6Om1vZGlmaWNhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUJsb2I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhQmxvYjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhQmxvYjo6cmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhQmxvYjo6cmVhZERpcmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhQmxvYjo6aXNVc2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUJsb2I6
OnRvRGF0YUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUJsb2I6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFCbG9iOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUJs
b2I6OnNsaWNlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q29tYmluZWRCbG9iOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tYmluZWRCbG9iOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbWJpbmVkQmxvYjo6aXNDb21iaW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpDb21i
aW5lZEJsb2I6OnRvQ29tYmluZWRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbWJpbmVkQmxv
Yjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbWJpbmVkQmxvYjo6c2xpY2VJbnRlcm5h
bCk6CisgICAgICAgICogaHRtbC9CbG9iLmlkbDoKKyAgICAgICAgKiBodG1sL0Jsb2JCdWlsZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRlcjo6QmxvYkJ1aWxkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxkZXI6On5CbG9iQnVpbGRlcik6CisgICAgICAg
IChXZWJDb3JlOjpTdHJpbmdXcml0ZXJXaXRoRml4TGluZUJyZWFrczo6ZmluYWxTdHJpbmdMZW5n
dGgpOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nV3JpdGVyV2l0aEZpeExpbmVCcmVha3M6OlN0
cmluZ1dyaXRlcldpdGhGaXhMaW5lQnJlYWtzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dy
aXRlcldpdGhGaXhMaW5lQnJlYWtzOjp3cml0ZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JCdWlsZGVyOjphcHBlbmRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxk
ZXI6OmFwcGVuZEJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxkZXI6OmdldEJsb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRW5kaW5nc1R5cGVNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYkJ1aWxkZXI6OnNldEVuZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1
aWxkZXI6OmVuZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxkZXI6OmdldEVuZGlu
Z0NoYXJzKToKKyAgICAgICAgKiBodG1sL0Jsb2JCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QmxvYkJ1aWxkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVp
bGRlcjo6KToKKyAgICAgICAgKiBodG1sL0Jsb2JCdWlsZGVyLmlkbDogQWRkZWQuCisgICAgICAg
ICogaHRtbC9CeXRlU3RvcmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJ5dGVTdG9y
ZTo6Qnl0ZVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJ5dGVTdG9yZTo6fkJ5dGVTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpCeXRlU3RvcmU6OmFwcGVuZERpcmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpCeXRlU3RvcmU6OnJlYWREaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtY3B5
V3JpdGVyOjpNZW1jcHlXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtY3B5V3JpdGVyOjp3
cml0ZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbWNweVJlYWRlcjo6TWVtY3B5UmVh
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbWNweVJlYWRlcjo6cmVhZEZyb21CdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Qnl0ZVN0b3JlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
Qnl0ZVN0b3JlOjpyZWFkKToKKyAgICAgICAgKiBodG1sL0J5dGVTdG9yZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJ5dGVTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJ5
dGVTdG9yZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCeXRlU3RvcmU6OmVtcHR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJ5dGVTdG9yZTo6UmVhZGVyOjp+UmVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkJ5dGVTdG9yZTo6V3JpdGVyOjp+V3JpdGVyKToKKyAgICAgICAgKiBodG1sL0RPTUZv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZvcm1EYXRhOjphcHBlbmQpOgorICAg
ICAgICAqIGh0bWwvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAg
ICAgICAgKiBodG1sL0ZpbGUuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtRGF0YTo6YXBwZW5kRE9NRm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorCiAyMDEwLTAzLTMwICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBkZWZp
bmUgc3RhdGljIHZhcmlhYmxlcyB3aXRoIERFRklORV9TVEFUSUNfTE9DQUwgbWFjcm8KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAKaW5kZXggYjE3MjJjMC4uM2I1NmM3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJKU0JhckluZm8uY3BwIgogI2luY2x1ZGUgIkpTQmVmb3JlTG9hZEV2
ZW50LmNwcCIKICNpbmNsdWRlICJKU0Jsb2IuY3BwIgorI2luY2x1ZGUgIkpTQmxvYkJ1aWxkZXIu
Y3BwIgogI2luY2x1ZGUgIkpTQ2FudmFzR3JhZGllbnQuY3BwIgogI2luY2x1ZGUgIkpTQ2FudmFz
UGF0dGVybi5jcHAiCiAjaW5jbHVkZSAiSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCIKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBmODI4YTZkLi40MTBmNmEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01
NCw2ICs1NCw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIEJhckluZm8gXAogICAgIEJlZm9yZUxv
YWRFdmVudCBcCiAgICAgQmxvYiBcCisgICAgQmxvYkJ1aWxkZXIgXAogICAgIENEQVRBU2VjdGlv
biBcCiAgICAgQ1NTQ2hhcnNldFJ1bGUgXAogICAgIENTU0ZvbnRGYWNlUnVsZSBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRl
eCA5ZWUyYTc2Li40M2FkMzZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE2OCw2ICsxNjgsNyBAQCBJRExfQklORElO
R1MgKz0gXAogCVdlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGwgXAogCVdlYkNv
cmUvZG9tL1doZWVsRXZlbnQuaWRsIFwKIAlXZWJDb3JlL2h0bWwvQmxvYi5pZGwgXAorCVdlYkNv
cmUvaHRtbC9CbG9iQnVpbGRlci5pZGwgXAogCVdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBcnJh
eS5pZGwgXAogCVdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xBcnJheUJ1ZmZlci5pZGwgXAogCVdl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCeXRlQXJyYXkuaWRsIFwKQEAgLTM1NSw2ICszNTYsOSBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVy
LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxv
YkJ1aWxkZXJDb25zdHJ1Y3Rvci5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQnVp
bGRlckNvbnN0cnVjdG9yLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQnVpbGRlckN1
c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDREFUQVNlY3Rpb25DdXN0b20uY3Bw
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcCBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5jcHAgXApAQCAtOTkw
LDYgKzk5NCwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuaCBcCiAJV2ViQ29yZS9odG1sL0Jsb2IuY3BwIFwKIAlXZWJDb3JlL2h0bWwvQmxvYi5o
IFwKKwlXZWJDb3JlL2h0bWwvQmxvYkJ1aWxkZXIuY3BwIFwKKwlXZWJDb3JlL2h0bWwvQmxvYkJ1
aWxkZXIuaCBcCisJV2ViQ29yZS9odG1sL0J5dGVTdG9yZS5jcHAgXAorCVdlYkNvcmUvaHRtbC9C
eXRlU3RvcmUuaCBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRl
cy5oIFwKIAlXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcCBcCiAJV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZGViZTIxZi4uZDBkNDc0NyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTgxLDYgKzgxLDcgQEAKICAgICAgICAgICAgICdkb20vV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1doZWVsRXZlbnQuaWRsJywKICAgICAgICAgICAg
ICdodG1sL0Jsb2IuaWRsJywKKyAgICAgICAgICAgICdodG1sL0Jsb2JCdWlsZGVyLmlkbCcsCiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJbmZvLmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViR0xBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFz
L1dlYkdMQXJyYXlCdWZmZXIuaWRsJywKQEAgLTQ3Nyw2ICs0NzgsOSBAQAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTQXVk
aW9Db25zdHJ1Y3Rvci5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVy
Q29uc3RydWN0b3IuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVy
Q29uc3RydWN0b3IuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNCbG9iQnVpbGRlckN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNDREFU
QVNlY3Rpb25DdXN0b20uY3BwJywKQEAgLTY3OCw2ICs2ODIsNyBAQAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QmFySW5mb0N1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEJsb2JCdWlsZGVyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYkdMQXJyYXlDdXN0b20uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViR0xBcnJheUN1c3RvbS5jcHAnLApAQCAtMTM1Nyw2ICsxMzYyLDEwIEBA
CiAgICAgICAgICAgICAnaGlzdG9yeS9QYWdlQ2FjaGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9C
bG9iLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9CbG9iLmgnLAorICAgICAgICAgICAgJ2h0bWwv
QmxvYkJ1aWxkZXIuY3BwJywKKyAgICAgICAgICAgICdodG1sL0Jsb2JCdWlsZGVyLmgnLAorICAg
ICAgICAgICAgJ2h0bWwvQnl0ZVN0b3JlLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9CeXRlU3Rv
cmUuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xBcnJheS5jcHAnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQXJyYXkuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52
YXMvV2ViR0xBcnJheUJ1ZmZlci5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBy
aSBiL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggMDE5ODJhNy4uOWZhY2IwZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnByaQorKysgYi9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0yOTUs
NiArMjk1LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmlkbCBcCiAgICAgZG9tL1doZWVsRXZlbnQuaWRsIFwKICAgICBodG1sL0Jsb2IuaWRsIFwK
KyAgICBodG1sL0Jsb2JCdWlsZGVyLmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xBcnJheS5p
ZGwgXAogICAgIGh0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaWRsIFwKICAgICBodG1sL2Nh
bnZhcy9XZWJHTEJ5dGVBcnJheS5pZGwgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBy
byBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZjE1ZTljNy4uY2Q5MDk3NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yNzYs
NiArMjc2LDggQEAgU09VUkNFUyArPSBcCiAgICAgYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxk
LmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwIFwKICAgICBiaW5kaW5n
cy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ29u
c3RydWN0b3IuY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3Iu
aCBcCiAgICAgYmluZGluZ3MvanMvSlNDREFUQVNlY3Rpb25DdXN0b20uY3BwIFwKICAgICBiaW5k
aW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIFwKICAgICBiaW5kaW5n
cy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgXApAQCAtNTk1LDYgKzU5
Nyw4IEBAIFNPVVJDRVMgKz0gXAogICAgIGhpc3RvcnkvcXQvSGlzdG9yeUl0ZW1RdC5jcHAgXAog
ICAgIGhpc3RvcnkvUGFnZUNhY2hlLmNwcCBcCiAgICAgaHRtbC9CbG9iLmNwcCBcCisgICAgaHRt
bC9CbG9iQnVpbGRlci5jcHAgXAorICAgIGh0bWwvQnl0ZVN0b3JlLmNwcCBcCiAgICAgaHRtbC9j
YW52YXMvQ2FudmFzR3JhZGllbnQuY3BwIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJu
LmNwcCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUGl4ZWxBcnJheS5jcHAgXApAQCAtMTAyNCw2
ICsxMDI4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxk
LmggXAogICAgIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmggXAogICAgIGJpbmRpbmdzL2pz
L0pTQXVkaW9Db25zdHJ1Y3Rvci5oIFwKKyAgICBiaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ29u
c3RydWN0b3IuaCBcCiAgICAgYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9t
LmggXAogICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIFwKICAgICBi
aW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIFwKQEAgLTEzMDEsNiAr
MTMwNiw4IEBAIEhFQURFUlMgKz0gXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAgICAg
aGlzdG9yeS9QYWdlQ2FjaGUuaCBcCiAgICAgaHRtbC9CbG9iLmggXAorICAgIGh0bWwvQmxvYkJ1
aWxkZXIuaCBcCisgICAgaHRtbC9CeXRlU3RvcmUuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFz
R3JhZGllbnQuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oIFwKICAgICBodG1s
L2NhbnZhcy9DYW52YXNQaXhlbEFycmF5LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggOTQ5NjdkNS4uZTYxNjllMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC03NzcsNiArNzc3LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8
RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxE
ZXJpdmVkU291cmNlc1xKU0Jsb2JCdWlsZGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29y
ZVxEZXJpdmVkU291cmNlc1xKU0Jsb2JCdWlsZGVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ2FudmFzR3JhZGllbnQuY3BwIg0KIAkJCQk+DQog
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTMwMDk3LDYgKzMwMTA1LDIyIEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQmxvYkJ1
aWxkZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxCbG9iQnVpbGRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxCeXRlU3RvcmUuY3BwIg0KKwkJCQk+DQor
CQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxCeXRlU3Rv
cmUuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcY2FudmFzXENhbnZhc0dyYWRpZW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4MGE2ZmIu
LmQwYzljMzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMjA1LDYgKzIyMDUsMTYgQEAKIAkJODVGNzRFMEEwQUE4REY4QzAwMERDMjg0IC8qIERPTUNT
U1Vua25vd25SdWxlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTAzMkRENTBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTVW5r
bm93blJ1bGUuaCAqLzsgfTsKIAkJODVGRjMxNUEwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1RkYzMTU4MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50LmggKi87IH07CiAJ
CTg1RkYzMTVCMEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGRjMxNTkwQUFGQkZDQjAw
Mzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gKi87IH07CisJCTg5NEY5RUFFMTE2MUQwMTkw
MERBQTM1NyAvKiBKU0Jsb2JCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg5NEY5RUFDMTE2MUQwMTkwMERBQTM1NyAvKiBKU0Jsb2JCdWls
ZGVyLmNwcCAqLzsgfTsKKwkJODk0RjlFQUYxMTYxRDAxOTAwREFBMzU3IC8qIEpTQmxvYkJ1aWxk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5NEY5
RUFEMTE2MUQwMTkwMERBQTM1NyAvKiBKU0Jsb2JCdWlsZGVyLmggKi87IH07CisJCTg5OEJFRDIw
MTE2MThEMzgwMEE2RUEwNiAvKiBCbG9iQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OThCRUQxRjExNjE4RDM4MDBBNkVBMDYgLyogQmxv
YkJ1aWxkZXIuY3BwICovOyB9OworCQk4OThCRUQyMjExNjE4RDQyMDBBNkVBMDYgLyogQmxvYkJ1
aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5
OEJFRDIxMTE2MThENDIwMEE2RUEwNiAvKiBCbG9iQnVpbGRlci5oICovOyB9OworCQk4OThCRUQy
NDExNjE4RDRCMDBBNkVBMDYgLyogQnl0ZVN0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5OEJFRDIzMTE2MThENEIwMEE2RUEwNiAvKiBCeXRl
U3RvcmUuY3BwICovOyB9OworCQk4OThCRUQyNjExNjE4RDU2MDBBNkVBMDYgLyogQnl0ZVN0b3Jl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OThCRUQy
NTExNjE4RDU2MDBBNkVBMDYgLyogQnl0ZVN0b3JlLmggKi87IH07CisJCTg5OEJFRDI4MTE2MThF
QzEwMEE2RUEwNiAvKiBCbG9iQnVpbGRlci5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5OEJFRDI3MTE2MThFQzEwMEE2RUEwNiAvKiBCbG9iQnVp
bGRlci5pZGwgKi87IH07CisJCTg5QTM1RDVBMTE2MTg5MjUwMEU3MDFFNiAvKiBKU0Jsb2JCdWls
ZGVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5QTM1RDU5MTE2MTg5MjUwMEU3MDFFNiAvKiBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0
b3IuaCAqLzsgfTsKKwkJODlBMzVENUMxMTYxODk0QTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxkZXJD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODlBMzVENUIxMTYxODk0QTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxkZXJDdXN0b20uY3BwICovOyB9
OworCQk4OUEzNUQ1RTExNjE4OTU5MDBFNzAxRTYgLyogSlNCbG9iQnVpbGRlckNvbnN0cnVjdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5QTM1
RDVEMTE2MTg5NTkwMEU3MDFFNiAvKiBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuY3BwICovOyB9
OwogCQk5MzAyQjBCRDBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDJCMEJDMEQ3OUY4MjkwMEM3
RUU4MyAvKiBQYWdlR3JvdXAuY3BwICovOyB9OwogCQk5MzAyQjBCRjBENzlGODJDMDBDN0VFODMg
LyogUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzAyQjBCRTBENzlGODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMwNUIyNEQwOThGMUI2QjAw
QzI4ODU1IC8qIFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzY0NSw2ICs3NjU1LDE2IEBA
CiAJCTg1RjU2QTc5MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUZGMzE1ODBB
QUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NS2V5Ym9hcmRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NUZGMzE1OTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01LZXlib2FyZEV2ZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTRGOUVBQzExNjFEMDE5MDBEQUEz
NTcgLyogSlNCbG9iQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0Jsb2JCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk0
RjlFQUQxMTYxRDAxOTAwREFBMzU3IC8qIEpTQmxvYkJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNCbG9iQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4OThCRUQxRjExNjE4RDM4MDBBNkVBMDYgLyogQmxvYkJ1aWxkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvYkJ1aWxkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4OThCRUQyMTExNjE4RDQyMDBBNkVBMDYgLyogQmxvYkJ1
aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvYkJ1aWxkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk4QkVEMjMxMTYxOEQ0QjAwQTZFQTA2IC8q
IEJ5dGVTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRl
U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OThCRUQyNTExNjE4RDU2
MDBBNkVBMDYgLyogQnl0ZVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5dGVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OThCRUQyNzExNjE4
RUMxMDBBNkVBMDYgLyogQmxvYkJ1aWxkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJs
b2JCdWlsZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODlBMzVENTkxMTYx
ODkyNTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODlBMzVENUIxMTYxODk0QTAwRTcwMUU2IC8qIEpTQmxvYkJ1
aWxkZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNC
bG9iQnVpbGRlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5QTM1
RDVEMTE2MTg5NTkwMEU3MDFFNiAvKiBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCbG9iQnVpbGRlckNvbnN0cnVjdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwMkIwQkMwRDc5RjgyOTAwQzdF
RTgzIC8qIFBhZ2VHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYWdlR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzAyQjBCRTBE
NzlGODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhZ2VHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA1QjI0
QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTI0LDYgKzEy
OTQ0LDExIEBACiAJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1sICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4OThCRUQyNzExNjE4RUMxMDBB
NkVBMDYgLyogQmxvYkJ1aWxkZXIuaWRsICovLAorCQkJCTg5OEJFRDI1MTE2MThENTYwMEE2RUEw
NiAvKiBCeXRlU3RvcmUuaCAqLywKKwkJCQk4OThCRUQyMzExNjE4RDRCMDBBNkVBMDYgLyogQnl0
ZVN0b3JlLmNwcCAqLywKKwkJCQk4OThCRUQyMTExNjE4RDQyMDBBNkVBMDYgLyogQmxvYkJ1aWxk
ZXIuaCAqLywKKwkJCQk4OThCRUQxRjExNjE4RDM4MDBBNkVBMDYgLyogQmxvYkJ1aWxkZXIuY3Bw
ICovLAogCQkJCUE0M0JGNTk2MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50
LmNwcCAqLywKIAkJCQlBNDNCRjU5NzExNDkyOTBBMDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxl
bWVudC5oICovLAogCQkJCTQ5NDg0RkFFMTAyQ0YwMUUwMDE4N0REMyAvKiBjYW52YXMgKi8sCkBA
IC0xMzI3MCw2ICsxMzI5NSw4IEBACiAJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAvKiBIVE1M
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4OTRGOUVB
QzExNjFEMDE5MDBEQUEzNTcgLyogSlNCbG9iQnVpbGRlci5jcHAgKi8sCisJCQkJODk0RjlFQUQx
MTYxRDAxOTAwREFBMzU3IC8qIEpTQmxvYkJ1aWxkZXIuaCAqLywKIAkJCQkyRTJEOTlDQjEwRTJC
QkRBMDA0OTYzMzcgLyogSlNCbG9iLmNwcCAqLywKIAkJCQkyRTJEOTlDQzEwRTJCQkRBMDA0OTYz
MzcgLyogSlNCbG9iLmggKi8sCiAJCQkJNjVERjMyMzMwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2Fu
dmFzR3JhZGllbnQuY3BwICovLApAQCAtMTQ5MTYsNiArMTQ5NDMsNyBAQAogCQlCQzRFREVGNzBD
MDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk4OUEzNUQ1QjExNjE4OTRBMDBFNzAxRTYgLyogSlNCbG9iQnVpbGRl
ckN1c3RvbS5jcHAgKi8sCiAJCQkJNDE1QjdDNTQwRkY1OThFNjAwNjc3MEY3IC8qIEpTQWJzdHJh
Y3RXb3JrZXJDdXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBK
U0F0dHJDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCkBAIC0xNTI3MCw2ICsxNTI5OCw4
IEBACiAJCUJDQ0U1OEI0MTA2MUU5MjUwMDhGQjM1QSAvKiBDb25zdHJ1Y3RvcnMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTg5QTM1RDVEMTE2MTg5NTkw
MEU3MDFFNiAvKiBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTg5QTM1RDU5
MTE2MTg5MjUwMEU3MDFFNiAvKiBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuaCAqLywKIAkJCQlF
NEVFRkZDNjBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9yLmNwcCAqLywKIAkJ
CQlFNEVFRkZDNzBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9yLmggKi8sCiAJ
CQkJRTBGRUYzNzFCNzdDNTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5j
cHAgKi8sCkBAIC0xODc2OCw2ICsxODc5OCwxMCBAQAogCQkJCUU0Nzc4QjgwMTE1QTU4MUEwMEI1
RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYwMDExNUZG
NkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg0OTlBNTE1MTE1RkIzMzAwMEY1NjZFMyAvKiBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODlBMzVENUExMTYxODkyNTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxk
ZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODk4QkVEMjIxMTYxOEQ0MjAwQTZF
QTA2IC8qIEJsb2JCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4OThCRUQyNjExNjE4RDU2
MDBBNkVBMDYgLyogQnl0ZVN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4OTRGOUVBRjExNjFE
MDE5MDBEQUEzNTcgLyogSlNCbG9iQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODg3MSw2
ICsxODkwNSw3IEBACiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6
b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMkUwODg4QzQxMTQ4ODNBOTAw
QUY0MjY1IC8qIERPTUZvcm1EYXRhLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJODk4QkVEMjgx
MTYxOEVDMTAwQTZFQTA2IC8qIEJsb2JCdWlsZGVyLmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
MDk4Miw2ICsyMTAxNywxMSBAQAogCQkJCTYyQ0QzMjU5MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0
b21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDc3OEI3RjExNUE1ODFBMDBCNUQzNzIg
LyogSlNDdXN0b21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDk5QTUxNDExNUZCMzMw
MDBGNTY2RTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJODlBMzVENUMxMTYxODk0QTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxkZXJDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJODlBMzVENUUxMTYxODk1OTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxk
ZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4OThCRUQyMDExNjE4RDM4MDBB
NkVBMDYgLyogQmxvYkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODk4QkVEMjQxMTYx
OEQ0QjAwQTZFQTA2IC8qIEJ5dGVTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4OTRGOUVB
RTExNjFEMDE5MDBEQUEzNTcgLyogSlNCbG9iQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCA1YTA4MjBiLi5h
OTMzYWNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBA
IC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNBdHRyQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0F1ZGlvQ29uc3RydWN0b3Iu
Y3BwIgorI2luY2x1ZGUgIkpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5jcHAiCisjaW5jbHVkZSAi
SlNCbG9iQnVpbGRlckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDREFUQVNlY3Rpb25DdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTQ1NTUnVsZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDU1NSdWxl
TGlzdEN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkJ1
aWxkZXJDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkJ1aWxkZXJD
b25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRmZmFh
ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQnVpbGRlckNv
bnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiQmxvYkJ1aWxk
ZXIuaCIKKyNpbmNsdWRlICJKU0Jsb2JCdWlsZGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBKU0Jsb2JC
dWlsZGVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkJsb2JCdWlsZGVyQ29uc3RydWN0b3IiLCAw
LCAwLCAwIH07CisKK0pTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcjo6SlNCbG9iQnVpbGRlckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpT
QmxvYkJ1aWxkZXJQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7Cisg
ICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMs
IDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBKU09i
amVjdCogY29uc3RydWN0QmxvYkJ1aWxkZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29u
c3RydWN0b3IsIGNvbnN0IEFyZ0xpc3QmKQoreworICAgIEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rv
cioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcio+
KGNvbnN0cnVjdG9yKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0ganND
b25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgUmVmZXJlbmNlRXJyb3IsICJCbG9iQnVp
bGRlciBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIik7CisK
KyAgICBSZWZQdHI8QmxvYkJ1aWxkZXI+IGJsb2JCdWlsZGVyID0gQmxvYkJ1aWxkZXI6OmNyZWF0
ZSgpOworICAgIHJldHVybiBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGpzQ29uc3Ry
dWN0b3ItPmdsb2JhbE9iamVjdCgpLCBCbG9iQnVpbGRlciwgYmxvYkJ1aWxkZXIuZ2V0KCkpOwor
fQorCitDb25zdHJ1Y3RUeXBlIEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0
RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEu
bmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0QmxvYkJ1aWxkZXI7CisgICAgcmV0dXJuIENvbnN0
cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5oIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi45ZWRkZTVhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSlNCbG9iQnVpbGRlckNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNCbG9iQnVpbGRlckNvbnN0
cnVjdG9yX2gKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1
Y3Rvck9iamVjdCB7CisgIHB1YmxpYzoKKyAgICBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyBzX2luZm87CisKKyAgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIEpTQzo6Q29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYpOworICAgIHZpcnR1
YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2lu
Zm87IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpTQmxvYkJ1
aWxkZXJDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxv
YkJ1aWxkZXJDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ3Vz
dG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjIwODk4Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ3VzdG9tLmNw
cApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQmxv
YkJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJCbG9iQnVpbGRlci5o
IgorI2luY2x1ZGUgIkpTQmxvYi5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBDdXN0b20gZnVu
Y3Rpb25zCitKU1ZhbHVlIEpTQmxvYkJ1aWxkZXI6OmFwcGVuZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKKyAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50
cyIpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSlNWYWx1ZSB2YWwgPSBhcmdz
LmF0KDApOworICAgIGlmICh2YWwuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgaW1wbCgp
LT5hcHBlbmRTdHJpbmcoU3RyaW5nKCIiKSwgZWMpOworICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0
cygmSlNCbG9iOjpzX2luZm8pKQorICAgICAgICBpbXBsKCktPmFwcGVuZEJsb2IodG9CbG9iKHZh
bCkpOworICAgIGVsc2UKKyAgICAgICAgaW1wbCgpLT5hcHBlbmRTdHJpbmcodmFsLnRvU3RyaW5n
KGV4ZWMpLCBlYyk7CisKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGJhNTZlMjguLmQ3YjY3YWIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9yeS5oIgogI2lu
Y2x1ZGUgIkpTQXVkaW9Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQmxvYkJ1aWxkZXJDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRGF0YWJhc2UuaCIKICNpbmNsdWRlICJKU0RhdGFiYXNl
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCkBAIC02NTgsNiArNjU5
LDExIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OndlYlNvY2tldChFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiB9CiAjZW5kaWYKIAorSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YmxvYkJ1aWxkZXIoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0Jsb2JC
dWlsZGVyQ29uc3RydWN0b3I+KGV4ZWMsIHRoaXMpOworfQorCiAvLyBDdXN0b20gZnVuY3Rpb25z
CiAKIC8vIEhlbHBlciBmb3Igd2luZG93Lm9wZW4oKSBhbmQgd2luZG93LnNob3dNb2RhbERpYWxv
ZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JCdWlsZGVy
Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkJ1aWxkZXJDdXN0
b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmODM1NGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JCdWlsZGVyQ3Vz
dG9tLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IlY4QmxvYkJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4
QmxvYi5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEJsb2JCdWls
ZGVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uQmxvYkJ1aWxkZXIuQ29uc3RydWN0b3IiKTsKKyAgICBpZiAoIWFy
Z3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2Jq
ZWN0IGN1c3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOworCisgICAg
UmVmUHRyPEJsb2JCdWlsZGVyPiBibG9iQnVpbGRlciA9IEJsb2JCdWlsZGVyOjpjcmVhdGUoKTsK
KworICAgIC8vIFNldHVwIHRoZSBzdGFuZGFyZCB3cmFwcGVyIG9iamVjdCBpbnRlcm5hbCBmaWVs
ZHMuCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZv
LCBibG9iQnVpbGRlci5nZXQoKSk7CisKKyAgICAvLyBBZGQgb2JqZWN0IHRvIHRoZSB3cmFwcGVy
IG1hcC4KKyAgICBibG9iQnVpbGRlci0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dy
YXBwZXJGb3JET01PYmplY3QoYmxvYkJ1aWxkZXIuZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOworCisgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7
Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEJsb2JCdWlsZGVyOjphcHBlbmRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkJsb2JC
dWlsZGVyLmFwcGVuZCIpOworICAgIEJsb2JCdWlsZGVyKiBibG9iQnVpbGRlciA9IFY4QmxvYkJ1
aWxkZXI6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
Ik5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmcgPSBhcmdzWzBdOworICAgIGlmIChWOEJsb2I6Okhhc0luc3Rh
bmNlKGFyZykpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CisgICAgICAgIEJsb2IqIGJsb2IgPSBWOEJs
b2I6OnRvTmF0aXZlKG9iamVjdCk7CisgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmRCbG9iKGJs
b2IpOworICAgIH0gZWxzZSB7CisgICAgICAgIFN0cmluZyBtc2cgPSB0b1dlYkNvcmVTdHJpbmco
YXJnKTsKKyAgICAgICAgYmxvYkJ1aWxkZXItPmFwcGVuZFN0cmluZyhtc2csIGVjKTsKKyAgICB9
CisKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKKworICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA2
MjE1ZDM4Li5lOWEwZDUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01XaW5kb3dDdXN0b20uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKIAorI2luY2x1ZGUgIkJsb2JCdWlsZGVyLmgiCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01U
aW1lci5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Jsb2IuY3BwIGIvV2ViQ29yZS9odG1s
L0Jsb2IuY3BwCmluZGV4IDgzYmJkYzAuLjgwYjAwYjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9CbG9iLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYi5jcHAKQEAgLTI5LDE4ICsyOSw1MyBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIkJsb2IuaCIKIAorI2lu
Y2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEJMT0Jf
U0xJQ0UpCiBjb25zdCBpbnQgQmxvYjo6dG9FbmRPZkZpbGUgPSAtMTsKIGNvbnN0IGRvdWJsZSBC
bG9iOjpkb05vdENoZWNrRmlsZUNoYW5nZSA9IDA7CisKK1Bhc3NSZWZQdHI8QmxvYj4gQmxvYjo6
c2xpY2UobG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkgY29uc3QKK3sKKyAgICAv
LyBDbGFtcCB0aGUgcmFuZ2UgaWYgaXQgZXhjZWVkcyB0aGUgc2l6ZSBsaW1pdC4KKyAgICBvZmZz
ZXQgKz0gc3RhcnQoKTsKKyAgICBpZiAob2Zmc2V0ID4gc25hcHNob3RFbmRQb3NpdGlvbigpKSB7
CisgICAgICAgIG9mZnNldCA9IDA7CisgICAgICAgIGxlbmd0aCA9IDA7CisgICAgfSBlbHNlIGlm
IChvZmZzZXQgKyBsZW5ndGggPiBzbmFwc2hvdEVuZFBvc2l0aW9uKCkpCisgICAgICAgIGxlbmd0
aCA9IHNuYXBzaG90RW5kUG9zaXRpb24oKSAtIG9mZnNldDsKKworICAgIGlmIChvZmZzZXQgPCAw
KQorICAgICAgICBvZmZzZXQgPSAwOworICAgIGlmIChsZW5ndGggPCAwKQorICAgICAgICBsZW5n
dGggPSAwOworCisgICAgcmV0dXJuIGFkb3B0UmVmKHNsaWNlSW50ZXJuYWwob2Zmc2V0LCBsZW5n
dGgpKTsKK30KICNlbmRpZgogCi1CbG9iOjpCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmlu
ZyBCbG9iOjpzdHJpbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAgLy8gTGV0J3MgYXNzdW1lIHdlIG9u
bHkgY2FyZSB1cCB0byBzaXplX3QncyBtYXggc2l6ZSBvZiBjb250ZW50LgorICAgIHNpemVfdCBv
dXRwdXRMZW5ndGggPSAgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKCkpOworICAgIGlmIChzaXpl
KCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gMSkKKyAgICAgICAgb3V0
cHV0TGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpIC0gMSk7CisgICAgVmVjdG9yPGNoYXI+IG91dChvdXRwdXRMZW5ndGggKyAxKTsK
KyAgICByZWFkKG91dC5kYXRhKCksIG91dHB1dExlbmd0aCk7CisgICAgb3V0W291dHB1dExlbmd0
aF0gPSAwOworICAgIHJldHVybiBTdHJpbmcob3V0LmRhdGEoKSk7Cit9CisKKy8vIEZpbGVCbG9i
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK0ZpbGVCbG9iOjpGaWxlQmxvYihjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgOiBtX3BhdGgocGF0aCkKICNpZiBFTkFCTEUoQkxPQl9TTElDRSkKICAgICAsIG1fc3RhcnQo
MCkKQEAgLTUzLDcgKzg4LDcgQEAgQmxvYjo6QmxvYihjb25zdCBTdHJpbmcmIHBhdGgpCiB9CiAK
ICNpZiBFTkFCTEUoQkxPQl9TTElDRSkKLUJsb2I6OkJsb2IoY29uc3QgU3RyaW5nJiBwYXRoLCBs
b25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGxvbmcgbG9uZyBzbmFwc2hvdFNpemUs
IGRvdWJsZSBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUpCitGaWxlQmxvYjo6RmlsZUJsb2IoY29u
c3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGxvbmcg
bG9uZyBzbmFwc2hvdFNpemUsIGRvdWJsZSBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUpCiAgICAg
OiBtX3BhdGgocGF0aCkKICAgICAsIG1fc3RhcnQoc3RhcnQpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC02MSwxMSArOTYsMTIgQEAgQmxvYjo6QmxvYihjb25zdCBTdHJpbmcmIHBhdGgsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgbG9uZyBsb25nIHNuYXAKICAgICAsIG1f
c25hcHNob3RTaXplKHNuYXBzaG90U2l6ZSkKICAgICAsIG1fc25hcHNob3RNb2RpZmljYXRpb25U
aW1lKHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSkKIHsKLSAgICBBU1NFUlQoc3RhcnQgPj0gMCAm
JiBsZW5ndGggPj0gMCAmJiBzdGFydCArIGxlbmd0aCA8PSBzbmFwc2hvdFNpemUgJiYgc25hcHNo
b3RNb2RpZmljYXRpb25UaW1lKTsKKyAgICAvLyBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUgY2Fu
IGJlIDAgd2hlbiB0aGUgZmlsZSBpcyBhbHJlYWR5IHJlbW92ZWQuCisgICAgQVNTRVJUKHN0YXJ0
ID49IDAgJiYgbGVuZ3RoID49IDAgJiYgc3RhcnQgKyBsZW5ndGggPD0gc25hcHNob3RTaXplKTsK
IH0KICNlbmRpZgogCi11bnNpZ25lZCBsb25nIGxvbmcgQmxvYjo6c2l6ZSgpIGNvbnN0Cit1bnNp
Z25lZCBsb25nIGxvbmcgRmlsZUJsb2I6OnNpemUoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBK
YXZhU2NyaXB0IGNhbm5vdCByZXByZXNlbnQgc2l6ZXMgYXMgbGFyZ2UgYXMgdW5zaWduZWQgbG9u
ZyBsb25nLCB3ZSBuZWVkIHRvCiAgICAgLy8gY29tZSB1cCB3aXRoIGFuIGV4Y2VwdGlvbiB0byB0
aHJvdyBpZiBmaWxlIHNpemUgaXMgbm90IHJlcHJlc2V0YWJsZS4KQEAgLTc5LDQwICsxMTUsMTQz
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iOjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihzaXplKTsKIH0KIAoraW50NjRfdCBGaWxlQmxv
Yjo6cmVhZChjaGFyKiwgc2l6ZV90KSBjb25zdAoreworICAgIC8vIEZJWE1FCisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludDY0X3QgRmlsZUJsb2I6OnJlYWRE
aXJlY3QoUmVhZGVyKiwgaW50NjRfdCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRQorICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIC0xOworfQorCiAjaWYgRU5BQkxFKEJMT0JfU0xJQ0Up
Ci1QYXNzUmVmUHRyPEJsb2I+IEJsb2I6OnNsaWNlKGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGxlbmd0aCkgY29uc3QKK2xvbmcgbG9uZyBGaWxlQmxvYjo6c25hcHNob3RFbmRQb3NpdGlvbigp
IGNvbnN0Cit7CisgICAgaWYgKG1fc25hcHNob3RDYXB0dXJlZCkKKyAgICAgICAgcmV0dXJuIG1f
c25hcHNob3RTaXplOworICAgIGxvbmcgbG9uZyBzbmFwc2hvdFNpemUgPSAwOworICAgIGlmICgh
Z2V0RmlsZVNpemUobV9wYXRoLCBzbmFwc2hvdFNpemUpKQorICAgICAgICByZXR1cm4gLTE7Cisg
ICAgcmV0dXJuIHNuYXBzaG90U2l6ZTsKK30KKworQmxvYiogRmlsZUJsb2I6OnNsaWNlSW50ZXJu
YWwobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoKSBjb25zdAogewogICAgIC8vIFdo
ZW4gd2Ugc2xpY2UgYSBmaWxlIGZvciB0aGUgZmlyc3QgdGltZSwgd2Ugb2J0YWluIGEgc25hcHNo
b3Qgb2YgdGhlIGZpbGUgYnkgY2FwdHVyaW5nIGl0cyBjdXJyZW50IHNpemUgYW5kIG1vZGlmaWNh
dGlvbiB0aW1lLgogICAgIC8vIFRoZSBtb2RpZmljYXRpb24gdGltZSB3aWxsIGJlIHVzZWQgdG8g
dmVyaWZ5IGlmIHRoZSBmaWxlIGhhcyBiZWVuIGNoYW5nZWQgb3Igbm90LCB3aGVuIHRoZSB1bmRl
cmx5aW5nIGRhdGEgYXJlIGFjY2Vzc2VkLgotICAgIGxvbmcgbG9uZyBzbmFwc2hvdFNpemU7CiAg
ICAgZG91YmxlIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAobV9zbmFwc2hvdENh
cHR1cmVkKSB7Ci0gICAgICAgIHNuYXBzaG90U2l6ZSA9IG1fc25hcHNob3RTaXplOworICAgIGxv
bmcgbG9uZyBzbmFwc2hvdFNpemUgPSBzbmFwc2hvdEVuZFBvc2l0aW9uKCk7CisgICAgaWYgKG1f
c25hcHNob3RDYXB0dXJlZCkKICAgICAgICAgc25hcHNob3RNb2RpZmljYXRpb25UaW1lID0gbV9z
bmFwc2hvdE1vZGlmaWNhdGlvblRpbWU7Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlIHsKICAgICAg
ICAgLy8gSWYgd2UgZmFpbCB0byByZXRyaWV2ZSB0aGUgc2l6ZSBvciBtb2RpZmljYXRpb24gdGlt
ZSwgcHJvYmFibHkgZHVlIHRvIHRoYXQgdGhlIGZpbGUgaGFzIGJlZW4gZGVsZXRlZCwgYW4gZW1w
dHkgYmxvYiB3aWxsIGJlIHJldHVybmVkLgogICAgICAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGlt
ZTsKLSAgICAgICAgaWYgKCFnZXRGaWxlU2l6ZShtX3BhdGgsIHNuYXBzaG90U2l6ZSkgfHwgIWdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpIHsKKyAgICAg
ICAgaWYgKHNuYXBzaG90U2l6ZSA9PSAtMSB8fCAhZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV9w
YXRoLCBtb2RpZmljYXRpb25UaW1lKSkgewogICAgICAgICAgICAgc25hcHNob3RTaXplID0gMDsK
ICAgICAgICAgICAgIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSA9IDA7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgc25hcHNob3RNb2RpZmljYXRpb25UaW1lID0gbW9kaWZpY2F0aW9uVGlt
ZTsKICAgICB9CiAKLSAgICAvLyBDbGFtcCB0aGUgcmFuZ2UgaWYgaXQgZXhjZWVkcyB0aGUgc2l6
ZSBsaW1pdC4KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QmxvYio+KG5ldyBGaWxlQmxvYihtX3Bh
dGgsIHN0YXJ0LCBsZW5ndGgsIHNuYXBzaG90U2l6ZSwgc25hcHNob3RNb2RpZmljYXRpb25UaW1l
KSk7Cit9CisjZW5kaWYKKworLy8gRGF0YUJsb2IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGF0YUJsb2I6OkRh
dGFCbG9iKE5vbk51bGxQYXNzUmVmUHRyPEJ5dGVTdG9yZT4gZGF0YSkKKyAgICA6IG1fZGF0YShk
YXRhKQorICAgICwgbV9zdGFydCgwKQorICAgICwgbV9sZW5ndGgobV9kYXRhLT5zaXplKCkpCit7
Cit9CisKKyNpZiBFTkFCTEUoQkxPQl9TTElDRSkKK0RhdGFCbG9iOjpEYXRhQmxvYihOb25OdWxs
UGFzc1JlZlB0cjxCeXRlU3RvcmU+IGRhdGEsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxl
bmd0aCkKKyAgICA6IG1fZGF0YShkYXRhKQorICAgICwgbV9zdGFydChzdGFydCkKKyAgICAsIG1f
bGVuZ3RoKGxlbmd0aCkKK3sKK30KKyNlbmRpZgorCisvLyBDb21iaW5lZEJsb2IgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitDb21iaW5lZEJsb2I6OkNvbWJpbmVkQmxvYihjb25zdCBWZWN0b3I8UmVmUHRyPEJsb2I+ID4m
IGJsb2JMaXN0KQorICAgIDogbV90b3RhbFNpemUoMCkKK3sKKyAgICBhcHBlbmRCbG9iTGlzdChi
bG9iTGlzdCk7Cit9CisKKyNpZiBFTkFCTEUoQkxPQl9TTElDRSkKK0NvbWJpbmVkQmxvYjo6Q29t
YmluZWRCbG9iKGNvbnN0IFZlY3RvcjxSZWZQdHI8QmxvYj4gPiYgYmxvYkxpc3QsIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCkKKyAgICA6IG1fdG90YWxTaXplKDApCit7CisgICAg
dW5zaWduZWQgbG9uZyBsb25nIG9mZnNldCA9IHN0YXJ0OwogICAgIGlmIChzdGFydCA8IDApCi0g
ICAgICAgIHN0YXJ0ID0gMDsKKyAgICAgICAgb2Zmc2V0ID0gMDsKICAgICBpZiAobGVuZ3RoIDwg
MCkKLSAgICAgICAgbGVuZ3RoID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIHNpemVfdCBpID0g
MDsKKyAgICBmb3IgKDsgaSA8IGJsb2JMaXN0LnNpemUoKSAmJiBvZmZzZXQgPj0gYmxvYkxpc3Rb
aV0tPnNpemUoKTsgKytpKQorICAgICAgICBvZmZzZXQgLT0gYmxvYkxpc3RbaV0tPnNpemUoKTsK
KyAgICBmb3IgKDsgbGVuZ3RoID4gMCAmJiBpIDwgYmxvYkxpc3Quc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgYXBwZW5kQmxvYihibG9iTGlzdFtpXS0+c2xpY2Uob2Zmc2V0LCBsZW5ndGgpKTsKKyAg
ICAgICAgbGVuZ3RoIC09IG1fYmxvYkxpc3QubGFzdCgpLT5zaXplKCk7CisgICAgICAgIGlmIChv
ZmZzZXQgPiAwKQorICAgICAgICAgICAgb2Zmc2V0ID0gMDsKKyAgICB9Cit9CisjZW5kaWYKIAot
ICAgIGlmIChzdGFydCA+IHNuYXBzaG90U2l6ZSkgewotICAgICAgICBzdGFydCA9IDA7Ci0gICAg
ICAgIGxlbmd0aCA9IDA7Ci0gICAgfSBlbHNlIGlmIChzdGFydCArIGxlbmd0aCA+IHNuYXBzaG90
U2l6ZSkKLSAgICAgICAgbGVuZ3RoID0gc25hcHNob3RTaXplIC0gc3RhcnQ7Cit2b2lkIENvbWJp
bmVkQmxvYjo6YXBwZW5kQmxvYihOb25OdWxsUGFzc1JlZlB0cjxCbG9iPiBibG9iKQoreworICAg
IGlmIChibG9iLT5pc0NvbWJpbmVkKCkpCisgICAgICAgIGFwcGVuZEJsb2JMaXN0KHN0YXRpY19j
YXN0PENvbWJpbmVkQmxvYio+KGJsb2IuZ2V0KCkpLT5tX2Jsb2JMaXN0KTsKKyAgICBlbHNlIHsK
KyAgICAgICAgbV90b3RhbFNpemUgKz0gYmxvYi0+c2l6ZSgpOworICAgICAgICBtX2Jsb2JMaXN0
LmFwcGVuZChibG9iKTsKKyAgICB9Cit9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2Io
bV9wYXRoLCBtX3N0YXJ0ICsgc3RhcnQsIGxlbmd0aCwgc25hcHNob3RTaXplLCBzbmFwc2hvdE1v
ZGlmaWNhdGlvblRpbWUpKTsKK3ZvaWQgQ29tYmluZWRCbG9iOjphcHBlbmRCbG9iTGlzdChjb25z
dCBWZWN0b3I8UmVmUHRyPEJsb2I+ID4mIGJsb2JMaXN0KQoreworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYmxvYkxpc3Quc2l6ZSgpOyArK2kpCisgICAgICAgIGFwcGVuZEJsb2IoYmxvYkxp
c3RbaV0pOworfQorCitpbnQ2NF90IENvbWJpbmVkQmxvYjo6cmVhZChjaGFyKiBvdXQsIHNpemVf
dCBtYXhMZW5ndGgpIGNvbnN0Cit7CisgICAgaWYgKG1heExlbmd0aCA+IG1fdG90YWxTaXplKQor
ICAgICAgICBtYXhMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fdG90YWxTaXplKTsKKyAg
ICBpbnQ2NF90IHRvdGFsU2l6ZSA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Js
b2JMaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgIGludDY0X3Qgc2l6ZSA9IG1fYmxvYkxpc3Qu
YXQoaSktPnNpemUoKTsKKyAgICAgICAgaWYgKHRvdGFsU2l6ZSArIHNpemUgPiBtYXhMZW5ndGgp
CisgICAgICAgICAgICBzaXplID0gbWF4TGVuZ3RoIC0gdG90YWxTaXplOworICAgICAgICB0b3Rh
bFNpemUgKz0gbV9ibG9iTGlzdC5hdChpKS0+cmVhZChvdXQgKyB0b3RhbFNpemUsIHN0YXRpY19j
YXN0PHNpemVfdD4oc2l6ZSkpOworICAgIH0KKyAgICByZXR1cm4gdG90YWxTaXplOworfQorCitp
bnQ2NF90IENvbWJpbmVkQmxvYjo6cmVhZERpcmVjdChCbG9iOjpSZWFkZXIqIHJlYWRlciwgaW50
NjRfdCBtYXhMZW5ndGgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVXNpbmdEYXRhKCkpOworICAg
IGlmIChtYXhMZW5ndGggPiBtX3RvdGFsU2l6ZSkKKyAgICAgICAgbWF4TGVuZ3RoID0gbV90b3Rh
bFNpemU7CisgICAgaW50NjRfdCB0b3RhbFNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9ibG9iTGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICBpbnQ2NF90IHNpemUgPSBt
X2Jsb2JMaXN0LmF0KGkpLT5zaXplKCk7CisgICAgICAgIGlmICh0b3RhbFNpemUgKyBzaXplID4g
bWF4TGVuZ3RoKQorICAgICAgICAgICAgc2l6ZSA9IG1heExlbmd0aCAtIHRvdGFsU2l6ZTsKKyAg
ICAgICAgdG90YWxTaXplICs9IG1fYmxvYkxpc3QuYXQoaSktPnJlYWREaXJlY3QocmVhZGVyLCBz
aXplKTsKKyAgICB9CisgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KLSNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQmxvYi5oIGIvV2ViQ29y
ZS9odG1sL0Jsb2IuaAppbmRleCA2MTA4NDJlLi4yZThiMTg4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvQmxvYi5oCisrKyBiL1dlYkNvcmUvaHRtbC9CbG9iLmgKQEAgLTMxLDU2ICszMSw5NyBA
QAogI2lmbmRlZiBCbG9iX2gKICNkZWZpbmUgQmxvYl9oCiAKLSNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisjaW5jbHVkZSAiQnl0ZVN0b3JlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQmxvYiA6
IHB1YmxpYyBSZWZDb3VudGVkPEJsb2I+IHsKK2NsYXNzIEZpbGVCbG9iOworY2xhc3MgRGF0YUJs
b2I7CitjbGFzcyBDb21iaW5lZEJsb2I7CisKK2NsYXNzIEJsb2IgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVNoYXJlZDxCbG9iPiB7CiBwdWJsaWM6CiAjaWYgRU5BQkxFKEJMT0JfU0xJQ0UpCiAgICAgc3Rh
dGljIGNvbnN0IGludCB0b0VuZE9mRmlsZTsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIGRvTm90
Q2hlY2tGaWxlQ2hhbmdlOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBCbG9iKHBhdGgpKTsKLSAgICB9CisgICAgdHlwZWRlZiBCeXRlU3RvcmU6OlJlYWRlciBS
ZWFkZXI7CiAKICAgICB2aXJ0dWFsIH5CbG9iKCkgeyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBs
b25nIGxvbmcgc2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3QgcmVhZChjaGFy
KiBvdXQsIHNpemVfdCBtYXhMZW5ndGgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qg
cmVhZERpcmVjdChSZWFkZXIqIHJlYWRlciwgaW50NjRfdCBtYXhMZW5ndGgpIGNvbnN0ID0gMDsK
KworICAgIHZpcnR1YWwgYm9vbCBpc1VzaW5nRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzVXNpbmdEYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNDb21iaW5lZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisK
KyAgICB2aXJ0dWFsIEZpbGVCbG9iKiB0b0ZpbGVCbG9iKCkgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgRGF0YUJsb2IqIHRvRGF0YUJsb2IoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBD
b21iaW5lZEJsb2IqIHRvQ29tYmluZWRCbG9iKCkgeyByZXR1cm4gMDsgfQogCiAjaWYgRU5BQkxF
KEJMT0JfU0xJQ0UpCiAgICAgUGFzc1JlZlB0cjxCbG9iPiBzbGljZShsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBsZW5ndGgpIGNvbnN0OworICAgIHZpcnR1YWwgbG9uZyBsb25nIHN0YXJ0KCkg
Y29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgbG9uZyBsb25nIGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIHNpemUoKTsgfQorICAgIHZpcnR1YWwgbG9uZyBsb25nIHNuYXBzaG90RW5kUG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBzdGFydCgpICsgbGVuZ3RoKCk7IH0KKyAgICB2aXJ0dWFs
IGRvdWJsZSBtb2RpZmljYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gZG9Ob3RDaGVja0ZpbGVD
aGFuZ2U7IH0KICNlbmRpZgogCi0gICAgY29uc3QgU3RyaW5nJiBwYXRoKCkgY29uc3QgeyByZXR1
cm4gbV9wYXRoOyB9Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CiAjaWYgRU5B
QkxFKEJMT0JfU0xJQ0UpCi0gICAgbG9uZyBsb25nIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydDsgfQotICAgIGxvbmcgbG9uZyBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQotICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwc2hv
dE1vZGlmaWNhdGlvblRpbWU7IH0KKyAgICB2aXJ0dWFsIEJsb2IqIHNsaWNlSW50ZXJuYWwobG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoKSBjb25zdCA9IDA7CiAjZW5kaWYKK307CiAK
LXByb3RlY3RlZDoKLSAgICBCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCk7CisvLyBGaWxlQmxvYiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitjbGFzcyBGaWxlQmxvYiA6IHB1YmxpYyBCbG9iIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKHN0YXRpY19jYXN0PEJsb2IqPihuZXcgRmlsZUJs
b2IocGF0aCkpKTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIHBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX3BhdGg7IH0KKworICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGludDY0X3QgcmVhZChjaGFyKiBvdXQsIHNpemVfdCBtYXhMZW5n
dGgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50NjRfdCByZWFkRGlyZWN0KFJlYWRlciogcmVhZGVy
LCBpbnQ2NF90IG1heExlbmd0aCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNVc2luZ0Zp
bGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBGaWxlQmxvYiogdG9GaWxl
QmxvYigpIHsgcmV0dXJuIHRoaXM7IH0KIAotcHJpdmF0ZToKICNpZiBFTkFCTEUoQkxPQl9TTElD
RSkKLSAgICBCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgbGVuZ3RoLCBsb25nIGxvbmcgc25hcHNob3RTaXplLCBkb3VibGUgc25hcHNob3RNb2RpZmlj
YXRpb25UaW1lKTsKKyAgICB2aXJ0dWFsIGxvbmcgbG9uZyBzdGFydCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhcnQ7IH0KKyAgICB2aXJ0dWFsIGxvbmcgbG9uZyBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aDsgfQorICAgIHZpcnR1YWwgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUoKSBjb25z
dCB7IHJldHVybiBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZTsgfQogI2VuZGlmCiAKLSAgICAv
LyBUaGUgdW5kZXJseWluZyBwYXRoIG9mIHRoZSBmaWxlLWJhc2VkIGJsb2IuIAorcHJvdGVjdGVk
OgorICAgIEZpbGVCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCk7CisKK3ByaXZhdGU6CisgICAgLy8g
VGhlIHVuZGVybHlpbmcgcGF0aCBvZiB0aGUgZmlsZS1iYXNlZCBibG9iLgogICAgIFN0cmluZyBt
X3BhdGg7CiAKICNpZiBFTkFCTEUoQkxPQl9TTElDRSkKLSAgICAvLyBUaGUgc3RhcnRpbmcgcG9z
aXRpb24gb2YgdGhlIGZpbGUtYmFzZWQgYmxvYi4KKyAgICBGaWxlQmxvYihjb25zdCBTdHJpbmcm
IHBhdGgsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgbG9uZyBsb25nIHNuYXBz
aG90U2l6ZSwgZG91YmxlIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSk7CisgICAgdmlydHVhbCBC
bG9iKiBzbGljZUludGVybmFsKGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCkgY29u
c3Q7CisgICAgdmlydHVhbCBsb25nIGxvbmcgc25hcHNob3RFbmRQb3NpdGlvbigpIGNvbnN0Owor
CisgICAgLy8gVGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGluIHRoZSBmaWxlIG9yIGluIHRoZSBieXRl
LXN0b3JlIGZvciB0aGlzIGJsb2IuCiAgICAgbG9uZyBsb25nIG1fc3RhcnQ7CiAKLSAgICAvLyBU
aGUgbGVuZ3RoIG9mIHRoZSBmaWxlLWJhc2VkIGJsb2IuIFRoZSB2YWx1ZSBvZiAtMSBtZWFucyB0
byB0aGUgZW5kIG9mIHRoZSBmaWxlLgorICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIHNuYXBzaG90
IGRhdGEuIFRoZSB2YWx1ZSBvZiAtMSBtZWFucyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGZvciBm
aWxlLWJhc2VkIGJsb2JzLgogICAgIGxvbmcgbG9uZyBtX2xlbmd0aDsKIAogICAgIC8vIEEgZmxh
ZyB0byB0ZWxsIGlmIGEgc25hcHNob3QgaGFzIGJlZW4gY2FwdHVyZWQuCkBAIC05NCw2ICsxMzUs
ODggQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gRGF0YUJsb2IgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
Y2xhc3MgRGF0YUJsb2IgOiBwdWJsaWMgQmxvYiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QmxvYj4gY3JlYXRlKGNvbnN0IE5vbk51bGxQYXNzUmVmUHRyPEJ5dGVTdG9yZT4gZGF0
YSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihzdGF0aWNfY2FzdDxCbG9iKj4obmV3
IERhdGFCbG9iKGRhdGEpKSk7CisgICAgfQorCisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxv
bmcgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKKyAgICB2aXJ0dWFsIGludDY0
X3QgcmVhZChjaGFyKiBvdXQsIHNpemVfdCBtYXhMZW5ndGgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9kYXRhLT5yZWFkKG91dCwgbV9zdGFydCwgbWF4TGVuZ3RoKTsKKyAgICB9Cisg
ICAgdmlydHVhbCBpbnQ2NF90IHJlYWREaXJlY3QoQmxvYjo6UmVhZGVyKiByZWFkZXIsIGludDY0
X3QgbWF4TGVuZ3RoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS0+cmVhZERp
cmVjdChyZWFkZXIsIG1fc3RhcnQsIG1heExlbmd0aCk7CisgICAgfQorCisgICAgdmlydHVhbCBi
b29sIGlzVXNpbmdEYXRhKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgRGF0
YUJsb2IqIHRvRGF0YUJsb2IoKSB7IHJldHVybiB0aGlzOyB9CisKKyNpZiBFTkFCTEUoQkxPQl9T
TElDRSkKKyAgICB2aXJ0dWFsIGxvbmcgbG9uZyBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnQ7IH0KKyAgICB2aXJ0dWFsIGxvbmcgbG9uZyBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xl
bmd0aDsgfQorI2VuZGlmCisKK3ByaXZhdGU6CisgICAgRGF0YUJsb2IoTm9uTnVsbFBhc3NSZWZQ
dHI8Qnl0ZVN0b3JlPiBkYXRhKTsKKyNpZiBFTkFCTEUoQkxPQl9TTElDRSkKKyAgICBEYXRhQmxv
YihOb25OdWxsUGFzc1JlZlB0cjxCeXRlU3RvcmU+IGRhdGEsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGxlbmd0aCk7CisgICAgdmlydHVhbCBCbG9iKiBzbGljZUludGVybmFsKGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxCbG9iKj4obmV3IERhdGFCbG9iKG1fZGF0YSwgc3RhcnQsIGxlbmd0aCkpOwor
ICAgIH0KKyNlbmRpZgorCisgICAgUmVmUHRyPEJ5dGVTdG9yZT4gbV9kYXRhOworICAgIGxvbmcg
bG9uZyBtX3N0YXJ0OworICAgIGxvbmcgbG9uZyBtX2xlbmd0aDsKK307CisKKy8vIENvbWJpbmVk
QmxvYiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK2NsYXNzIENvbWJpbmVkQmxvYiA6IHB1YmxpYyBCbG9iIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoY29uc3QgVmVjdG9yPFJlZlB0
cjxCbG9iPiA+JiBibG9iTGlzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihzdGF0
aWNfY2FzdDxCbG9iKj4obmV3IENvbWJpbmVkQmxvYihibG9iTGlzdCkpKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3Rh
bFNpemU7IH0KKyAgICB2aXJ0dWFsIGludDY0X3QgcmVhZChjaGFyKiBvdXQsIHNpemVfdCBtYXhM
ZW5ndGgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50NjRfdCByZWFkRGlyZWN0KEJsb2I6OlJlYWRl
ciogcmVhZGVyLCBpbnQ2NF90IG1heExlbmd0aCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wg
aXNDb21iaW5lZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIENvbWJpbmVk
QmxvYiogdG9Db21iaW5lZEJsb2IoKSB7IHJldHVybiB0aGlzOyB9CisKKyAgICB2b2lkIGFwcGVu
ZEJsb2IoTm9uTnVsbFBhc3NSZWZQdHI8QmxvYj4gYmxvYik7CisKKyNpZiBFTkFCTEUoQkxPQl9T
TElDRSkKKyAgICBsb25nIGxvbmcgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemU7
IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBCbG9iOworICAgIENvbWJp
bmVkQmxvYihjb25zdCBWZWN0b3I8UmVmUHRyPEJsb2I+ID4mIGJsb2JMaXN0KTsKKyAgICB2b2lk
IGFwcGVuZEJsb2JMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8QmxvYj4gPiYgYmxvYkxpc3QpOwor
CisjaWYgRU5BQkxFKEJMT0JfU0xJQ0UpCisgICAgQ29tYmluZWRCbG9iKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8QmxvYj4gPiYgYmxvYkxpc3QsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0
aCk7CisgICAgdmlydHVhbCBCbG9iKiBzbGljZUludGVybmFsKGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGxlbmd0aCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxC
bG9iKj4obmV3IENvbWJpbmVkQmxvYihtX2Jsb2JMaXN0LCBzdGFydCwgbGVuZ3RoKSk7CisgICAg
fQorI2VuZGlmCisKKyAgICBWZWN0b3I8UmVmUHRyPEJsb2I+ID4gbV9ibG9iTGlzdDsKKyAgICBs
b25nIGxvbmcgbV90b3RhbFNpemU7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBCbG9iX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9iLmlkbCBiL1dlYkNv
cmUvaHRtbC9CbG9iLmlkbAppbmRleCA4ZGI2MDY0Li4zYmU0YTY2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvQmxvYi5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0Jsb2IuaWRsCkBAIC0zMiwxMCAr
MzIsMTMgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgaW50ZXJmYWNlIEJsb2IgewogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7Ci0gICAgICAgIAorCiAj
aWYgZGVmaW5lZChFTkFCTEVfQkxPQl9TTElDRSkgJiYgRU5BQkxFX0JMT0JfU0xJQ0UKICAgICAg
ICAgQmxvYiBzbGljZShpbiBsb25nIGxvbmcgc3RhcnQsIGluIGxvbmcgbG9uZyBsZW5ndGgpOwog
I2VuZGlmCi0gICAgfTsKIAorI2lmbmRlZiBOREVCVUcKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHN0cmluZ1ZhbHVlOworI2Vu
ZGlmCisgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9iQnVpbGRlci5jcHAg
Yi9XZWJDb3JlL2h0bWwvQmxvYkJ1aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjRiYzQwNDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYkJ1
aWxkZXIuY3BwCkBAIC0wLDAgKzEsMjEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkJsb2JCdWlsZGVyLmgiCisKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiQnl0ZVN0b3Jl
LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBPUyhXSU5E
T1dTKQorc3RhdGljIGNvbnN0IEJsb2JCdWlsZGVyOjpFbmRpbmdzVHlwZSBuYXRpdmVFbmRpbmcg
PSBCbG9iQnVpbGRlcjo6RU5ESU5HX0NSTEY7CisjZWxzZQorc3RhdGljIGNvbnN0IEJsb2JCdWls
ZGVyOjpFbmRpbmdzVHlwZSBuYXRpdmVFbmRpbmcgPSBCbG9iQnVpbGRlcjo6RU5ESU5HX0xGOwor
I2VuZGlmCisKK0Jsb2JCdWlsZGVyOjpCbG9iQnVpbGRlcigpCisgICAgOiBtX2J5dGVTdG9yZShC
eXRlU3RvcmU6OmNyZWF0ZSgpKQorICAgICwgbV9lbmRpbmdzKEVORElOR19UUkFOU1BBUkVOVCkK
K3sKK30KKworQmxvYkJ1aWxkZXI6On5CbG9iQnVpbGRlcigpCit7Cit9CisKK2NsYXNzIFN0cmlu
Z1dyaXRlcldpdGhGaXhMaW5lQnJlYWtzIDogcHVibGljIEJ5dGVTdG9yZTo6V3JpdGVyIHsKK3B1
YmxpYzoKKyAgICBTdHJpbmdXcml0ZXJXaXRoRml4TGluZUJyZWFrcyhjb25zdCBDU3RyaW5nJiBm
cm9tLCBCbG9iQnVpbGRlcjo6RW5kaW5nc1R5cGUgZGVzaXJlZCk7CisgICAgaW50NjRfdCBmaW5h
bFN0cmluZ0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsY3VsYXRlZEZpbmFsU3RyaW5nTGVu
Z3RoOyB9CisgICAgdmlydHVhbCBpbnQ2NF90IHdyaXRlVG9CdWZmZXIoY2hhciogb3V0LCBpbnQ2
NF90IGxlbmd0aCk7Citwcml2YXRlOgorICAgIENTdHJpbmcgbV9mcm9tOworICAgIEJsb2JCdWls
ZGVyOjpFbmRpbmdzVHlwZSBtX2VuZGluZ3M7CisgICAgY29uc3QgY2hhciogbV9lbmRpbmdDaGFy
czsKKyAgICB1bnNpZ25lZCBpbnQgbV9lbmRpbmdMZW5ndGg7CisgICAgaW50IG1fbmVlZEZpeDsK
KyAgICBpbnQ2NF90IG1fY2FsY3VsYXRlZEZpbmFsU3RyaW5nTGVuZ3RoOworfTsKKworU3RyaW5n
V3JpdGVyV2l0aEZpeExpbmVCcmVha3M6OlN0cmluZ1dyaXRlcldpdGhGaXhMaW5lQnJlYWtzKGNv
bnN0IENTdHJpbmcmIGZyb20sIEJsb2JCdWlsZGVyOjpFbmRpbmdzVHlwZSBlbmRpbmdzKQorICAg
IDogbV9mcm9tKGZyb20pCisgICAgLCBtX2VuZGluZ3MoZW5kaW5ncyA9PSBCbG9iQnVpbGRlcjo6
RU5ESU5HX05BVElWRSA/IG5hdGl2ZUVuZGluZyA6IGVuZGluZ3MpCisgICAgLCBtX2VuZGluZ0No
YXJzKEJsb2JCdWlsZGVyOjpnZXRFbmRpbmdDaGFycyhtX2VuZGluZ3MpKQorICAgICwgbV9lbmRp
bmdMZW5ndGgoc3RybGVuKG1fZW5kaW5nQ2hhcnMpKQorICAgICwgbV9uZWVkRml4KDApCit7Cisg
ICAgbV9jYWxjdWxhdGVkRmluYWxTdHJpbmdMZW5ndGggPSBtX2Zyb20ubGVuZ3RoKCk7CisgICAg
aWYgKG1fZW5kaW5ncyA9PSBCbG9iQnVpbGRlcjo6RU5ESU5HX1RSQU5TUEFSRU5UKQorICAgICAg
ICByZXR1cm47CisKKyAgICBjb25zdCBjaGFyKiBwID0gbV9mcm9tLmRhdGEoKTsKKyAgICB3aGls
ZSAoY2hhciBjID0gKnArKykgeworICAgICAgICBpZiAoYyA9PSAnXHInKSB7CisgICAgICAgICAg
ICAvLyBTYWZlIHRvIGxvb2sgYWhlYWQgYmVjYXVzZSBvZiB0cmFpbGluZyAnXDAnLgorICAgICAg
ICAgICAgaWYgKCpwID09ICdcbicgJiYgbV9lbmRpbmdzICE9IEJsb2JCdWlsZGVyOjpFTkRJTkdf
Q1JMRikgeworICAgICAgICAgICAgICAgIG1fY2FsY3VsYXRlZEZpbmFsU3RyaW5nTGVuZ3RoICs9
IChtX2VuZGluZ0xlbmd0aCAtIDIpOworICAgICAgICAgICAgICAgICsrbV9uZWVkRml4OworICAg
ICAgICAgICAgfSBlbHNlIGlmIChtX2VuZGluZ3MgIT0gQmxvYkJ1aWxkZXI6OkVORElOR19DUikg
eworICAgICAgICAgICAgICAgIG1fY2FsY3VsYXRlZEZpbmFsU3RyaW5nTGVuZ3RoICs9IChtX2Vu
ZGluZ0xlbmd0aCAtIDEpOworICAgICAgICAgICAgICAgICsrbV9uZWVkRml4OworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJyAmJiBtX2VuZGluZ3MgIT0gQmxvYkJ1
aWxkZXI6OkVORElOR19MRikgeworICAgICAgICAgICAgbV9jYWxjdWxhdGVkRmluYWxTdHJpbmdM
ZW5ndGggKz0gKG1fZW5kaW5nTGVuZ3RoIC0gMSk7CisgICAgICAgICAgICArK21fbmVlZEZpeDsK
KyAgICAgICAgfQorICAgIH0KK30KKworaW50NjRfdCBTdHJpbmdXcml0ZXJXaXRoRml4TGluZUJy
ZWFrczo6d3JpdGVUb0J1ZmZlcihjaGFyKiBvdXQsIGludDY0X3QgbGVuZ3RoKQoreworICAgIEFT
U0VSVChtX2Zyb20uZGF0YSgpKTsKKyAgICBsZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG1fY2Fs
Y3VsYXRlZEZpbmFsU3RyaW5nTGVuZ3RoKTsKKworICAgIGlmICghbV9uZWVkRml4KSB7CisgICAg
ICAgIEFTU0VSVChsZW5ndGggPD0gbV9mcm9tLmxlbmd0aCgpKTsKKyAgICAgICAgbWVtY3B5KG91
dCwgbV9mcm9tLmRhdGEoKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICAgICAg
cmV0dXJuIGxlbmd0aDsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiBwID0gbV9mcm9tLmRhdGEo
KTsKKyAgICBpbnQ2NF90IG53cml0dGVuID0gMDsKKyAgICB3aGlsZSAoKnAgJiYgbndyaXR0ZW4r
KyA8IGxlbmd0aCkgeworICAgICAgICBjaGFyIGMgPSAqcCsrOworICAgICAgICBpZiAoYyA9PSAn
XHInKSB7CisgICAgICAgICAgICBpZiAoKnAgPT0gJ1xuJyAmJiBtX2VuZGluZ3MgIT0gQmxvYkJ1
aWxkZXI6OkVORElOR19DUkxGKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiBDUkxGIGludG8g
ZGVzaXJlZEVuZGluZ3MuCisgICAgICAgICAgICAgICAgbWVtY3B5KG91dCwgbV9lbmRpbmdDaGFy
cywgbV9lbmRpbmdMZW5ndGgpOworICAgICAgICAgICAgICAgIG91dCArPSBtX2VuZGluZ0xlbmd0
aDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKnAgIT0gJ1xuJyAmJiBtX2VuZGluZ3MgIT0gQmxv
YkJ1aWxkZXI6OkVORElOR19DUikgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gQ1IgaW50byBk
ZXNpcmVkRW5kaW5ncy4KKyAgICAgICAgICAgICAgICBtZW1jcHkob3V0LCBtX2VuZGluZ0NoYXJz
LCBtX2VuZGluZ0xlbmd0aCk7CisgICAgICAgICAgICAgICAgb3V0ICs9IG1fZW5kaW5nTGVuZ3Ro
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJyAmJiBtX2VuZGlu
Z3MgIT0gQmxvYkJ1aWxkZXI6OkVORElOR19MRikgeworICAgICAgICAgICAgLy8gVHVybiBMRiBp
bnRvIGRlc2lyZWRFbmRpbmdzLgorICAgICAgICAgICAgbWVtY3B5KG91dCwgbV9lbmRpbmdDaGFy
cywgbV9lbmRpbmdMZW5ndGgpOworICAgICAgICAgICAgb3V0ICs9IG1fZW5kaW5nTGVuZ3RoOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVycyBh
bG9uZS4KKyAgICAgICAgICAgICpvdXQrKyA9IGM7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIG53cml0dGVuOworfQorCitib29sIEJsb2JCdWlsZGVyOjphcHBlbmRTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBTdHJpbmdXcml0ZXJXaXRoRml4
TGluZUJyZWFrcyB3cml0ZXIodGV4dC51dGY4KCksIG1fZW5kaW5ncyk7CisgICAgcmV0dXJuIG1f
Ynl0ZVN0b3JlLT5hcHBlbmREaXJlY3QoJndyaXRlciwgd3JpdGVyLmZpbmFsU3RyaW5nTGVuZ3Ro
KCkpOworfQorCitib29sIEJsb2JCdWlsZGVyOjphcHBlbmRCbG9iKFBhc3NSZWZQdHI8QmxvYj4g
YmxvYikKK3sKKyAgICBpZiAoIWJsb2ItPnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKCFtX2J5dGVTdG9yZS0+ZW1wdHkoKSkgeworICAgICAgICBtX2Jsb2JMaXN0LmFwcGVu
ZChEYXRhQmxvYjo6Y3JlYXRlKG1fYnl0ZVN0b3JlLnJlbGVhc2UoKSkpOworICAgICAgICBtX2J5
dGVTdG9yZSA9IEJ5dGVTdG9yZTo6Y3JlYXRlKCk7CisgICAgfQorICAgIG1fYmxvYkxpc3QuYXBw
ZW5kKGJsb2IpOworICAgIHJldHVybiB0cnVlOworfQorCitQYXNzUmVmUHRyPEJsb2I+IEJsb2JC
dWlsZGVyOjpnZXRCbG9iKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYmxvYkxpc3Quc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gRGF0YUJsb2I6OmNyZWF0ZShtX2J5dGVTdG9yZSk7CisgICAgaWYgKG1f
YmxvYkxpc3Quc2l6ZSgpID09IDEgJiYgbV9ieXRlU3RvcmUtPmVtcHR5KCkpCisgICAgICAgIHJl
dHVybiBtX2Jsb2JMaXN0Lmxhc3QoKTsKKworICAgIFJlZlB0cjxCbG9iPiBibG9iID0gQ29tYmlu
ZWRCbG9iOjpjcmVhdGUobV9ibG9iTGlzdCk7CisgICAgaWYgKCFtX2J5dGVTdG9yZS0+ZW1wdHko
KSkKKyAgICAgICAgYmxvYi0+dG9Db21iaW5lZEJsb2IoKS0+YXBwZW5kQmxvYihEYXRhQmxvYjo6
Y3JlYXRlKG1fYnl0ZVN0b3JlKSk7CisKKyAgICByZXR1cm4gYmxvYi5yZWxlYXNlKCk7Cit9CisK
K3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEJsb2JCdWlsZGVyOjpFbmRpbmdzVHlwZSwgQ2FzZUZv
bGRpbmdIYXNoPiBFbmRpbmdzVHlwZU1hcDsKK3N0YXRpYyBjb25zdCBFbmRpbmdzVHlwZU1hcCog
Y3JlYXRlRW5kaW5nc1R5cGVNYXAoKQoreworICAgIEVuZGluZ3NUeXBlTWFwKiBtYXAgPSBuZXcg
RW5kaW5nc1R5cGVNYXA7CisgICAgbWFwLT5hZGQoInRyYW5zcGFyZW50IiwgQmxvYkJ1aWxkZXI6
OkVORElOR19UUkFOU1BBUkVOVCk7CisgICAgbWFwLT5hZGQoIm5hdGl2ZSIsIEJsb2JCdWlsZGVy
OjpFTkRJTkdfTkFUSVZFKTsKKyAgICBtYXAtPmFkZCgibGYiLCBCbG9iQnVpbGRlcjo6RU5ESU5H
X0xGKTsKKyAgICBtYXAtPmFkZCgiY3IiLCBCbG9iQnVpbGRlcjo6RU5ESU5HX0NSKTsKKyAgICBt
YXAtPmFkZCgiY3JsZiIsIEJsb2JCdWlsZGVyOjpFTkRJTkdfQ1JMRik7CisgICAgcmV0dXJuIG1h
cDsKK30KKwordm9pZCBCbG9iQnVpbGRlcjo6c2V0RW5kaW5ncyhjb25zdCBTdHJpbmcmIHR5cGUp
Cit7CisgICAgc3RhdGljIGNvbnN0IEVuZGluZ3NUeXBlTWFwKiB0eXBlTWFwID0gY3JlYXRlRW5k
aW5nc1R5cGVNYXAoKTsKKyAgICBtX2VuZGluZ3MgPSB0eXBlLmlzTnVsbCgpID8gRU5ESU5HX1RS
QU5TUEFSRU5UIDogdHlwZU1hcC0+Z2V0KHR5cGUpOworfQorCitTdHJpbmcgQmxvYkJ1aWxkZXI6
OmVuZGluZ3MoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9lbmRpbmdzKSB7CisgICAgY2FzZSBF
TkRJTkdfVFJBTlNQQVJFTlQ6IHJldHVybiAidHJhbnNwYXJlbnQiOworICAgIGNhc2UgRU5ESU5H
X05BVElWRTogcmV0dXJuICJuYXRpdmUiOworICAgIGNhc2UgRU5ESU5HX0xGOiByZXR1cm4gImxm
IjsKKyAgICBjYXNlIEVORElOR19DUjogcmV0dXJuICJjciI7CisgICAgY2FzZSBFTkRJTkdfQ1JM
RjogcmV0dXJuICJjcmxmIjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuICJ0cmFuc3BhcmVudCI7Cit9CisKK2NvbnN0IGNoYXIqIEJsb2JCdWlsZGVyOjpnZXRF
bmRpbmdDaGFycyhFbmRpbmdzVHlwZSBlbmRpbmdzKQoreworICAgIHN3aXRjaCAoZW5kaW5ncykg
eworICAgIGNhc2UgRU5ESU5HX0NSTEY6IHJldHVybiAiXHJcbiI7CisgICAgY2FzZSBFTkRJTkdf
Q1I6IHJldHVybiAiXHIiOworICAgIGNhc2UgRU5ESU5HX05BVElWRTogZ2V0RW5kaW5nQ2hhcnMo
bmF0aXZlRW5kaW5nKTsKKyAgICBkZWZhdWx0OiByZXR1cm4gIlxuIjsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICJcbiI7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9iQnVpbGRlci5oIGIvV2ViQ29y
ZS9odG1sL0Jsb2JCdWlsZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZDRjOWI5YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9CbG9iQnVpbGRlci5oCkBA
IC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEJsb2JCdWlsZGVyX2gKKyNkZWZpbmUgQmxvYkJ1aWxkZXJf
aAorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBCbG9iOworY2xhc3MgQnl0ZVN0b3JlOworY2xhc3MgQmxvYkJ1aWxkZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxCbG9iQnVpbGRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEJsb2JCdWlsZGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQmxvYkJ1aWxkZXIo
KSk7IH0KKyAgICB2aXJ0dWFsIH5CbG9iQnVpbGRlcigpOworCisgICAgLy8gQXBwZW5kcyBzdHJp
bmcuICBSZXR1cm5zIGZhbHNlIGlmIHRoZSBkYXRhIGNvdWxkIG5vdCBiZSBhZGRlZC4KKyAgICBi
b29sIGFwcGVuZFN0cmluZyhjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKKwor
ICAgIC8vIEFwcGVuZHMgYmxvYi4gIFJldHVybnMgZmFsc2UgaWYgdGhlIGRhdGEgY291bGQgbm90
IGJlIGFkZGVkLgorICAgIGJvb2wgYXBwZW5kQmxvYihQYXNzUmVmUHRyPEJsb2I+IGJsb2IpOwor
CisgICAgUGFzc1JlZlB0cjxCbG9iPiBnZXRCbG9iKCkgY29uc3Q7CisKKyAgICBlbnVtIEVuZGlu
Z3NUeXBlIHsKKyAgICAgICAgRU5ESU5HX1RSQU5TUEFSRU5UID0gMCwKKyAgICAgICAgRU5ESU5H
X05BVElWRSwKKyAgICAgICAgRU5ESU5HX0xGLAorICAgICAgICBFTkRJTkdfQ1IsCisgICAgICAg
IEVORElOR19DUkxGLAorICAgIH07CisgICAgdm9pZCBzZXRFbmRpbmdzKGNvbnN0IFN0cmluZyYp
OworICAgIFN0cmluZyBlbmRpbmdzKCkgY29uc3Q7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGdl
dEVuZGluZ0NoYXJzKEVuZGluZ3NUeXBlKTsKKworcHJpdmF0ZToKKyAgICBCbG9iQnVpbGRlcigp
OworCisgICAgVmVjdG9yPFJlZlB0cjxCbG9iPiA+IG1fYmxvYkxpc3Q7CisgICAgUmVmUHRyPEJ5
dGVTdG9yZT4gbV9ieXRlU3RvcmU7CisKKyAgICBFbmRpbmdzVHlwZSBtX2VuZGluZ3M7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBCbG9iQnVpbGRlcl9oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvQmxvYkJ1aWxkZXIuaWRsIGIvV2ViQ29yZS9odG1sL0Jsb2JC
dWlsZGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTkzNDBkCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmlkbApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworbW9kdWxlIGh0bWwgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ3VzdG9tQ29u
c3RydWN0b3IKKyAgICBdIEJsb2JCdWlsZGVyIHsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGVuZGluZ3M7CisKKyAgICAgICAgQmxvYiBnZXRC
bG9iKCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgYXBwZW5kKC8qIG92ZXJsb2FkZWQgKi8pOwor
ICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CeXRlU3RvcmUuY3BwIGIvV2Vi
Q29yZS9odG1sL0J5dGVTdG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMGNlMjgxMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9CeXRlU3RvcmUuY3Bw
CkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQnl0ZVN0
b3JlLmgiCisKKyNpbmNsdWRlIDxsaW1pdHM+CisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0J5dGVTdG9yZTo6Qnl0ZVN0b3JlKCkKKyAgICA6
IG1fYnVmZmVyKDApCisgICAgLCBtX2J1ZmZlclNpemUoMCkKK3sKK30KKworQnl0ZVN0b3JlOjp+
Qnl0ZVN0b3JlKCkKK3sKKyAgICBmYXN0RnJlZShtX2J1ZmZlcik7Cit9CisKK2Jvb2wgQnl0ZVN0
b3JlOjphcHBlbmREaXJlY3QoV3JpdGVyKiB3cml0ZXIsIGludDY0X3QgbGVuZ3RoKQoreworICAg
IE11dGV4TG9ja2VyIGxvY2sobV9sb2NrKTsKKyAgICBjaGFyKiBuZXdCdWZmZXIgPSAwOworICAg
IC8vIEZJWE1FOiBoYW5kbGUgc2l6ZW9mKHNpemVfdCkgPCBsZW5ndGggY2FzZXMKKyAgICBpZiAo
bV9idWZmZXJTaXplICsgbGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHNpemVfdCBuZXdTaXplID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihtX2J1ZmZlclNpemUgKyBsZW5ndGgpOworICAgIGlmICh0cnlGYXN0TWFsbG9j
KG5ld1NpemUpLmdldFZhbHVlKG5ld0J1ZmZlcikpIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyKQor
ICAgICAgICAgICAgbWVtY3B5KG5ld0J1ZmZlciwgbV9idWZmZXIsIG1fYnVmZmVyU2l6ZSk7Cisg
ICAgICAgIGludDY0X3QgbndyaXR0ZW4gPSB3cml0ZXItPndyaXRlVG9CdWZmZXIobmV3QnVmZmVy
ICsgbV9idWZmZXJTaXplLCBsZW5ndGgpOworICAgICAgICBmYXN0RnJlZShtX2J1ZmZlcik7Cisg
ICAgICAgIG1fYnVmZmVyID0gbmV3QnVmZmVyOworICAgICAgICBpZiAobndyaXR0ZW4gPCAwKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2J1ZmZlclNpemUgKz0gc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihud3JpdHRlbik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2ludDY0X3QgQnl0ZVN0b3JlOjpyZWFkRGlyZWN0KFJlYWRl
ciogcmVhZGVyLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBtYXhMZW5ndGgpIGNvbnN0Cit7Cisg
ICAgaWYgKG9mZnNldCA8IDAgfHwgbWF4TGVuZ3RoIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgIGlmICghbWF4TGVuZ3RoKQorICAgICAgICByZXR1cm4gMDsKKyAgICBNdXRleExvY2tlciBs
b2NrKG1fbG9jayk7CisgICAgaWYgKG9mZnNldCA+PSBtX2J1ZmZlclNpemUpCisgICAgICAgIHJl
dHVybiAwOworICAgIGlmIChvZmZzZXQgKyBtYXhMZW5ndGggPiBtX2J1ZmZlclNpemUpCisgICAg
ICAgIG1heExlbmd0aCA9IG1fYnVmZmVyU2l6ZSAtIG9mZnNldDsKKyAgICByZXR1cm4gcmVhZGVy
LT5yZWFkRnJvbUJ1ZmZlcigmbV9idWZmZXJbb2Zmc2V0XSwgbWF4TGVuZ3RoKTsKK30KKworc3Ry
dWN0IE1lbWNweVdyaXRlciA6IHB1YmxpYyBCeXRlU3RvcmU6OldyaXRlciB7CisgICAgTWVtY3B5
V3JpdGVyKGNvbnN0IGNoYXIqIGluKSA6IG1faW4oaW4pIHsgfQorICAgIHZpcnR1YWwgaW50NjRf
dCB3cml0ZVRvQnVmZmVyKGNoYXIqIG91dCwgaW50NjRfdCBsZW5ndGgpCisgICAgeworICAgICAg
ICBBU1NFUlQobGVuZ3RoIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwor
ICAgICAgICBtZW1jcHkob3V0LCBtX2luLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOwor
ICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKyAgICBjb25zdCBjaGFyKiBtX2luOworfTsK
Kworc3RydWN0IE1lbWNweVJlYWRlciA6IHB1YmxpYyBCeXRlU3RvcmU6OlJlYWRlciB7CisgICAg
TWVtY3B5UmVhZGVyKGNoYXIqIG91dCkgOiBtX291dChvdXQpIHsgfQorICAgIHZpcnR1YWwgaW50
NjRfdCByZWFkRnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBpbiwgaW50NjRfdCBsZW5ndGgpCisgICAg
eworICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkpOworICAgICAgICBtZW1jcHkobV9vdXQsIGluLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxl
bmd0aCkpOworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKyAgICBjaGFyKiBtX291dDsK
K307CisKK2Jvb2wgQnl0ZVN0b3JlOjphcHBlbmQoY29uc3QgY2hhciogaW4sIHNpemVfdCBsZW5n
dGgpCit7CisgICAgTWVtY3B5V3JpdGVyIHdyaXRlcihpbik7CisgICAgcmV0dXJuIGFwcGVuZERp
cmVjdCgmd3JpdGVyLCBsZW5ndGgpOworfQorCitpbnQ2NF90IEJ5dGVTdG9yZTo6cmVhZChjaGFy
KiBvdXQsIGludDY0X3Qgb2Zmc2V0LCBzaXplX3QgbWF4TGVuZ3RoKSBjb25zdAoreworICAgIE1l
bWNweVJlYWRlciByZWFkZXIob3V0KTsKKyAgICByZXR1cm4gcmVhZERpcmVjdCgmcmVhZGVyLCBv
ZmZzZXQsIG1heExlbmd0aCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9CeXRlU3RvcmUuaCBiL1dlYkNvcmUvaHRtbC9CeXRlU3RvcmUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzRmZTk1Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9odG1sL0J5dGVTdG9yZS5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJ5
dGVTdG9yZV9oCisjZGVmaW5lIEJ5dGVTdG9yZV9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBCeXRlU3RvcmUgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxCeXRlU3RvcmU+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCeXRlU3RvcmU+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBCeXRlU3RvcmUoKSk7IH0KKyAgICB2aXJ0dWFsIH5CeXRlU3RvcmUo
KTsKKworICAgIGludDY0X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyU2l6ZTsgfQor
ICAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisKKyAgICAvLyBSZWFk
cyB0aGUgZGF0YSBpbnRvIHxvdXR8IGF0IG1vc3QgfG1heExlbmd0aHwgYnl0ZXMuCisgICAgaW50
NjRfdCByZWFkKGNoYXIqIG91dCwgaW50NjRfdCBvZmZzZXQsIHNpemVfdCBtYXhMZW5ndGgpIGNv
bnN0OworCisgICAgLy8gQXBwZW5kcyByYXcgZGF0YSB8aW58LiAgUmV0dXJucyBmYWxzZSBpZiB0
aGUgZGF0YSBjb3VsZCBub3QgYmUgYWRkZWQuCisgICAgYm9vbCBhcHBlbmQoY29uc3QgY2hhciog
aW4sIHNpemVfdCBsZW5ndGgpOworCisgICAgY2xhc3MgUmVhZGVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgaW50NjRfdCByZWFkRnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBpbiwgaW50
NjRfdCBtYXhMZW5ndGgpID0gMDsKKyAgICAgICAgdmlydHVhbCB+UmVhZGVyKCkgeyB9CisgICAg
fTsKKworICAgIGNsYXNzIFdyaXRlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIGlu
dDY0X3Qgd3JpdGVUb0J1ZmZlcihjaGFyKiBvdXQsIGludDY0X3QgbWF4TGVuZ3RoKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgfldyaXRlcigpIHsgfQorICAgIH07CisKKyAgICBib29sIGFwcGVuZERp
cmVjdChXcml0ZXIqIHdyaXRlciwgaW50NjRfdCBtYXhMZW5ndGgpOworICAgIGludDY0X3QgcmVh
ZERpcmVjdChSZWFkZXIqIHJlYWRlciwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbWF4TGVuZ3Ro
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBCeXRlU3RvcmUoKTsKKworICAgIGNoYXIqIG1fYnVm
ZmVyOworICAgIHNpemVfdCBtX2J1ZmZlclNpemU7CisgICAgbXV0YWJsZSBNdXRleCBtX2xvY2s7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBCeXRlU3RvcmVfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvaHRtbC9E
T01Gb3JtRGF0YS5jcHAKaW5kZXggMTQ0MWU4Yi4uOWFjZGM0NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0RPTUZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3Bw
CkBAIC01MSw4ICs1MSw5IEBAIHZvaWQgRE9NRm9ybURhdGE6OmFwcGVuZChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB2b2lkIERPTUZvcm1EYXRhOjphcHBlbmQoY29u
c3QgU3RyaW5nJiBuYW1lLCBCbG9iKiBibG9iKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN1
cHBvcnQgc2xpY2VkIGZpbGUgd2hlbiBCbG9iLnNsaWNlIHN1cHBvcnQgaXMgbGFuZGVkLgotICAg
IGlmICghbmFtZS5pc0VtcHR5KCkgJiYgIWJsb2ItPnBhdGgoKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgUmVmUHRyPEZpbGU+IGZpbGUgPSBzdGF0aWNfY2FzdDxGaWxlKj4oYmxvYik7CisgICAgLy8g
RklYTUU6IE5lZWQgdG8gaGFuZGxlIGRhdGEgYmxvYgorICAgIGlmICghbmFtZS5pc0VtcHR5KCkg
JiYgYmxvYi0+aXNVc2luZ0ZpbGUoKSAmJiAhYmxvYi0+dG9GaWxlQmxvYigpLT5wYXRoKCkuaXNF
bXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxGaWxlPiBmaWxlID0gc3RhdGljX2Nhc3Q8RmlsZSo+
KGJsb2ItPnRvRmlsZUJsb2IoKSk7CiAgICAgICAgIGFwcGVuZEZpbGUobmFtZSwgZmlsZS5yZWxl
YXNlKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlLmNwcCBiL1dl
YkNvcmUvaHRtbC9GaWxlLmNwcAppbmRleCA5N2ZkYzQ1Li5lZGQzMjU4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvRmlsZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0ZpbGUuY3BwCkBAIC0zMiw3
ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoKQotICAgIDogQmxvYihwYXRoKQorICAgIDogRmlsZUJsb2IocGF0aCkKICAgICAsIG1f
bmFtZShwYXRoR2V0RmlsZU5hbWUocGF0aCkpCiB7CiAgICAgLy8gV2UgZG9uJ3QgdXNlIE1JTUVU
eXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aCgpIGJlY2F1c2UgaXQgcmV0dXJucyAiYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtIiB1cG9uIGZhaWx1cmUuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvRmlsZS5oIGIvV2ViQ29yZS9odG1sL0ZpbGUuaAppbmRleCBkZGE0ODJhLi43MWEzMWQx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvRmlsZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9GaWxl
LmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGaWxl
IDogcHVibGljIEJsb2IgeworY2xhc3MgRmlsZSA6IHB1YmxpYyBGaWxlQmxvYiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCkK
ICAgICB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGQ0NTdiZGMuLjUyY2ViYjQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CkBAIC00ODYsNiArNDg2LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBG
aWxlQ29uc3RydWN0b3IgRmlsZTsKICAgICAgICAgYXR0cmlidXRlIEZpbGVMaXN0Q29uc3RydWN0
b3IgRmlsZUxpc3Q7CiAgICAgICAgIGF0dHJpYnV0ZSBCbG9iQ29uc3RydWN0b3IgQmxvYjsKKyAg
ICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJdIEJsb2JCdWlsZGVyQ29uc3RydWN0b3Ig
QmxvYkJ1aWxkZXI7IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgogCiAgICAgICAgIGF0dHJp
YnV0ZSBOb2RlRmlsdGVyQ29uc3RydWN0b3IgTm9kZUZpbHRlcjsKICAgICAgICAgYXR0cmlidXRl
IFJhbmdlQ29uc3RydWN0b3IgUmFuZ2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cAppbmRleCA1OTdmODU5Li41MGE5MTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKQEAgLTE4OCw3ICsxODgsOCBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRET01Gb3JtRGF0
YShjb25zdCBET01Gb3JtRGF0YSYgZG9tRm9ybURhdGEsIGJvb2wgaXNNdWx0aVBhcgogICAgICAg
ICAgICAgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZTsKICAgICAgICAgICAgIC8vIElm
IHRoZSBjdXJyZW50IHR5cGUgaXMgRklMRSwgdGhlbiB3ZSBhbHNvIG5lZWQgdG8gaW5jbHVkZSB0
aGUgZmlsZW5hbWUKICAgICAgICAgICAgIGlmICh2YWx1ZS5maWxlKCkpIHsKLSAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSB2YWx1ZS5maWxlKCktPnBhdGgoKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQodmFsdWUuZmlsZSgpLT5pc1VzaW5nRmlsZSgpKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSB2YWx1ZS5maWxlKCktPnRvRmlsZUJsb2IoKS0+cGF0
aCgpOwogICAgICAgICAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9IHZhbHVlLmZpbGUoKS0+Zmls
ZU5hbWUoKTsKIAogICAgICAgICAgICAgICAgIC8vIExldCB0aGUgYXBwbGljYXRpb24gc3BlY2lm
eSBhIGZpbGVuYW1lIGlmIGl0J3MgZ29pbmcgdG8gZ2VuZXJhdGUgYSByZXBsYWNlbWVudCBmaWxl
IGZvciB0aGUgdXBsb2FkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA3NmI2
YmU2Li41MDNhMjhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMjYsNiAr
MjYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEJsb2I7CiBjbGFzcyBDaHJv
bWVDbGllbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIERvY3VtZW50OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCmluZGV4IGYxMGI1ODkuLjRkMTQ4NDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
QEAgLTQ0NywxNCArNDQ3LDIxIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoQmxvYiogYm9k
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKCFpbml0U2VuZChlYykpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIC8vIEZJWE1FOiBub24tZmlsZSBiYXNlZCBibG9iIG1heSBuZWVkIHRvIGJl
IHNlbnQgd2l0aCBhIHByb3BlcgorICAgIC8vIGNvbnRlbnQtdHlwZSAoYW5kIG5hbWUpLgorICAg
IGlmICghYm9keS0+aXNVc2luZ0ZpbGUoKSkgeworICAgICAgICBzZW5kKGJvZHktPnN0cmluZ1Zh
bHVlKCksIGVjKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChtX21ldGhvZCAh
PSAiR0VUIiAmJiBtX21ldGhvZCAhPSAiSEVBRCIgJiYgbV91cmwucHJvdG9jb2xJbkhUVFBGYW1p
bHkoKSkgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHNldCBhIENvbnRlbnQtVHlwZSBp
ZiBvbmUgaXMgbm90IHNldC4KICAgICAgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciB1cGxv
YWRpbmcgYnVuZGxlcy4KICAgICAgICAgbV9yZXF1ZXN0RW50aXR5Qm9keSA9IEZvcm1EYXRhOjpj
cmVhdGUoKTsKICNpZiBFTkFCTEUoQkxPQl9TTElDRSkKLSAgICAgICAgbV9yZXF1ZXN0RW50aXR5
Qm9keS0+YXBwZW5kRmlsZVJhbmdlKGJvZHktPnBhdGgoKSwgYm9keS0+c3RhcnQoKSwgYm9keS0+
bGVuZ3RoKCksIGJvZHktPm1vZGlmaWNhdGlvblRpbWUoKSk7CisgICAgICAgIG1fcmVxdWVzdEVu
dGl0eUJvZHktPmFwcGVuZEZpbGVSYW5nZShib2R5LT50b0ZpbGVCbG9iKCktPnBhdGgoKSwgYm9k
eS0+c3RhcnQoKSwgYm9keS0+bGVuZ3RoKCksIGJvZHktPm1vZGlmaWNhdGlvblRpbWUoKSk7CiAj
ZWxzZQotICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5hcHBlbmRGaWxlKGJvZHktPnBhdGgo
KSwgZmFsc2UpOworICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5hcHBlbmRGaWxlKGJvZHkt
PnRvRmlsZUJsb2IoKS0+cGF0aCgpLCBmYWxzZSk7CiAjZW5kaWYKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52206</attachid>
            <date>2010-03-31 13:22:02 -0700</date>
            <delta_ts>2010-06-11 15:20:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36568-20100331132201.patch</filename>
            <type>text/plain</type>
            <size>82339</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNGFjM2VkLi5mYzY2OTIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMt
MzEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgQmxvYkJ1aWxkZXIgZGVm
aW5lZCBpbiBGaWxlQVBJL0ZpbGVXcml0ZXIuCisJCUFkZGluZyBhIHRlc3QgdGhhdCBjaGVja3Mg
YmxvYiBjb250ZW50cyBjcmVhdGVkIGJ5IEJsb2JCdWlsZGVyCisJCWFuZCBzZW50IHZpYSB4aHIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjU2OAor
CisgICAgICAgICogaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWJsb2ItYnktYmxvYi1idWlsZGVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWJsb2It
YnktYmxvYi1idWlsZGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwv
cmVzb3VyY2VzL3NlbmQtYmxvYi1ieS1ibG9iLWJ1aWxkZXIuanM6IEFkZGVkLgorCiAyMDEwLTAz
LTMwICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRG1pdHJ5IFRpdG92LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Nh
bC9yZXNvdXJjZXMvc2VuZC1ibG9iLWJ5LWJsb2ItYnVpbGRlci5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9jYWwvcmVzb3VyY2VzL3NlbmQtYmxvYi1ieS1ibG9iLWJ1aWxkZXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjNDdkYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvcmVzb3VyY2VzL3NlbmQtYmxvYi1ieS1i
bG9iLWJ1aWxkZXIuanMKQEAgLTAsMCArMSw4MyBAQAorZGVzY3JpcHRpb24oIlRlc3QgZm9yIGJ1
aWxkaW5nIGJsb2JzIGJ5IEJsb2JCdWlsZGVyIGFuZCBzZW5kaW5nIHRoZW0gdmlhIFhNTEh0dHBS
ZXF1ZXN0LiIpOworCitmdW5jdGlvbiB1cGxvYWRCbG9iKGJsb2IsIGV4cGVjdGVkKQoreworICAg
IHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub3BlbigiUE9TVCIsICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3Bvc3QtZWNoby5j
Z2kiLCBmYWxzZSk7CisKKyAgICB2YXIgcGFzc2VkOworICAgIHZhciBtZXNzYWdlOworICAgIHRy
eSB7CisgICAgICAgIC8vIFNlbmRpbmcgdGhlIGJsb2IgKGFzIGEgc3RyaW5nKS4KKyAgICAgICAg
eGhyLnNlbmQoYmxvYik7CisgICAgICAgIGlmICh4aHIucmVzcG9uc2VUZXh0ID09IGV4cGVjdGVk
KSB7CisgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgbWVzc2FnZSA9ICJF
eHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkOiAiICsgeGhyLnJlc3BvbnNlVGV4dDsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlOworICAgICAgICAgICAg
bWVzc2FnZSA9ICJVbmV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2ZWQ6ICIgKyB4aHIucmVz
cG9uc2VUZXh0OworICAgICAgICB9CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgcGFzc2Vk
ID0gZmFsc2U7CisgICAgICAgIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBleGNlcHRpb24gdGhyb3du
OiAiICsgZXg7CisgICAgfQorCisgICAgaWYgKHBhc3NlZCkKKyAgICAgICAgdGVzdFBhc3NlZCht
ZXNzYWdlKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSk7Cit9CisKK3Zh
ciBzdHJpbmdBID0gJ0ExMjM0NTY3fCc7Cit2YXIgc3RyaW5nQiA9ICdCMTIzNDV8JzsKK3ZhciBz
dHJpbmdDID0gJ0MxMjM0NTY3ODkwMXwnOworCit2YXIgYmIgPSBuZXcgQmxvYkJ1aWxkZXIoKTsK
K3ZhciBzdHJpbmdWYWx1ZVN1cHBvcnRlZCA9IHR5cGVvZiBiYi5nZXRCbG9iKCkuc3RyaW5nVmFs
dWUgIT0gInVuZGVmaW5lZCI7CisKK2RlYnVnKCcqIEJsb2JCdWlsZGVyLmFwcGVuZChzdHJpbmcp
Jyk7CitiYi5hcHBlbmQoc3RyaW5nQSk7Cit2YXIgYmxvYjEgPSBiYi5nZXRCbG9iKCk7Cit1cGxv
YWRCbG9iKGJsb2IxLCBzdHJpbmdBKTsKKworYmIuYXBwZW5kKHN0cmluZ0IpOwordmFyIGJsb2Iy
ID0gYmIuZ2V0QmxvYigpOwordmFyIGV4cGVjdGVkID0gc3RyaW5nQSArIHN0cmluZ0I7Cit1cGxv
YWRCbG9iKGJsb2IyLCBleHBlY3RlZCk7CisKK2RlYnVnKCcqIEJsb2JCdWlsZGVyLmFwcGVuZChi
bG9iKScpOworYmIuYXBwZW5kKGJsb2IxKTsKK3ZhciBibG9iMyA9IGJiLmdldEJsb2IoKTsKK2V4
cGVjdGVkICs9IHN0cmluZ0E7Cit1cGxvYWRCbG9iKGJsb2IzLCBleHBlY3RlZCk7CisKK2RlYnVn
KCcqIEJsb2JCdWlsZGVyLmFwcGVuZChtaXhlZCknKTsKK2JiLmFwcGVuZChzdHJpbmdDKTsKK3Zh
ciBibG9iNCA9IGJiLmdldEJsb2IoKTsKK2V4cGVjdGVkICs9IHN0cmluZ0M7Cit1cGxvYWRCbG9i
KGJsb2I0LCBleHBlY3RlZCk7CisKK2JiLmFwcGVuZChibG9iMyk7Cit2YXIgYmxvYjUgPSBiYi5n
ZXRCbG9iKCk7CitleHBlY3RlZCA9IHN0cmluZ0EgKyBzdHJpbmdCICsgc3RyaW5nQSArIHN0cmlu
Z0MgKyBzdHJpbmdBICsgc3RyaW5nQiArIHN0cmluZ0E7Cit1cGxvYWRCbG9iKGJsb2I1LCBleHBl
Y3RlZCk7CisKK2RlYnVnKCcqIENvbWJpbmVkQmxvYi5zbGljZSgpJyk7Cit2YXIgYmxvYjYgPSBi
bG9iNS5zbGljZSgzLCAxMik7Cit2YXIgc2xpY2VFeHBlY3RlZDEgPSBleHBlY3RlZC5zdWJzdHIo
MywgMTIpOwordXBsb2FkQmxvYihibG9iNiwgc2xpY2VFeHBlY3RlZDEpOworCit2YXIgYmxvYjcg
PSBibG9iNS5zbGljZSgxMywgNDApOwordmFyIHNsaWNlRXhwZWN0ZWQyID0gZXhwZWN0ZWQuc3Vi
c3RyKDEzLCA0MCk7Cit1cGxvYWRCbG9iKGJsb2I3LCBzbGljZUV4cGVjdGVkMik7CisKK2RlYnVn
KCcqIHNsaWNlIG9mIHNsaWNlJyk7Cit2YXIgYmxvYjggPSBibG9iNi5zbGljZSgyLCA5KTsKK3Ns
aWNlRXhwZWN0ZWQxID0gc2xpY2VFeHBlY3RlZDEuc3Vic3RyKDIsIDkpOwordXBsb2FkQmxvYihi
bG9iOCwgc2xpY2VFeHBlY3RlZDEpOworCit2YXIgYmxvYjkgPSBibG9iNy5zbGljZSg1LCAxNyk7
CitzbGljZUV4cGVjdGVkMiA9IHNsaWNlRXhwZWN0ZWQyLnN1YnN0cig1LCAxNyk7Cit1cGxvYWRC
bG9iKGJsb2I5LCBzbGljZUV4cGVjdGVkMik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWJsb2It
YnktYmxvYi1idWlsZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9j
YWwvc2VuZC1ibG9iLWJ5LWJsb2ItYnVpbGRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q5OWI0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1ibG9iLWJ5LWJsb2ItYnVpbGRlci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMyBAQAorVGVzdCBmb3IgYnVpbGRpbmcgYmxvYnMgYnkgQmxvYkJ1aWxk
ZXIgYW5kIHNlbmRpbmcgdGhlbSB2aWEgWE1MSHR0cFJlcXVlc3QuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCisqIEJsb2JCdWlsZGVyLmFwcGVuZChzdHJpbmcpCitQQVNTIEV4cGVj
dGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2ZWQ6IEExMjM0NTY3fAorUEFTUyBFeHBlY3RlZCByZXNw
b25zZSBkYXRhIHJlY2VpdmVkOiBBMTIzNDU2N3xCMTIzNDV8CisqIEJsb2JCdWlsZGVyLmFwcGVu
ZChibG9iKQorUEFTUyBFeHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkOiBBMTIzNDU2N3xC
MTIzNDV8QTEyMzQ1Njd8CisqIEJsb2JCdWlsZGVyLmFwcGVuZChtaXhlZCkKK1BBU1MgRXhwZWN0
ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogQTEyMzQ1Njd8QjEyMzQ1fEExMjM0NTY3fEMxMjM0
NTY3ODkwMXwKK1BBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogQTEyMzQ1Njd8
QjEyMzQ1fEExMjM0NTY3fEMxMjM0NTY3ODkwMXxBMTIzNDU2N3xCMTIzNDV8QTEyMzQ1Njd8Cisq
IENvbWJpbmVkQmxvYi5zbGljZSgpCitQQVNTIEV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2
ZWQ6IDM0NTY3fEIxMjM0NQorUEFTUyBFeHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkOiA0
NXxBMTIzNDU2N3xDMTIzNDU2Nzg5MDF8QTEyMzQ1Njd8QjEyMzQ1CisqIHNsaWNlIG9mIHNsaWNl
CitQQVNTIEV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2ZWQ6IDU2N3xCMTIzNAorUEFTUyBF
eHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkOiAyMzQ1Njd8QzEyMzQ1Njc4OQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1ibG9iLWJ5LWJsb2ItYnVpbGRlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWJsb2ItYnktYmxvYi1idWls
ZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU3OTk0MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1ibG9iLWJ5
LWJsb2ItYnVpbGRlci5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NlbmQtYmxv
Yi1ieS1ibG9iLWJ1aWxkZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZlZC5qc2NiaW5kaW5ncy5tayBi
L1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1rCmluZGV4IGIzYzUzMWMuLjE0
MTI2NmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1r
CisrKyBiL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1rCkBAIC0xNTMsNiAr
MTUzLDcgQEAgJChwYXRzdWJzdCAlLmgsJS5jcHAsJChHRU4pKTogJChpbnRlcm1lZGlhdGVzKS9k
b20vJS5jcHAgOiAkKGludGVybWVkaWF0ZXMpL2RvbS8KICMgSFRNTAogR0VOIDo9IFwKICAgICAk
KGludGVybWVkaWF0ZXMpL2h0bWwvSlNCbG9iLmggXAorICAgICQoaW50ZXJtZWRpYXRlcykvaHRt
bC9KU0Jsb2JCdWlsZGVyLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvaHRtbC9KU0RPTUZvcm1E
YXRhLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvaHRtbC9KU0RhdGFHcmlkQ29sdW1uLmggXAog
ICAgICQoaW50ZXJtZWRpYXRlcykvaHRtbC9KU0RhdGFHcmlkQ29sdW1uTGlzdC5oIFwKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWsgYi9XZWJDb3JlL0Fu
ZHJvaWQuZGVyaXZlZC52OGJpbmRpbmdzLm1rCmluZGV4IGY2YTVlZmQuLmFkY2I3MzkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWsKKysrIGIvV2ViQ29y
ZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tawpAQCAtMTM1LDYgKzEzNSw3IEBAICQocGF0
c3Vic3QgJS5oLCUuY3BwLCQoR0VOKSk6ICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvJS5jcHAg
OiAkKGludGVybWVkaWF0ZXMpCiAjIEhUTUwKIEdFTiA6PSBcCiAgICAgJChpbnRlcm1lZGlhdGVz
KS9iaW5kaW5ncy9WOEJsb2IuaCBcCisgICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOEJs
b2JCdWlsZGVyLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhEYXRhR3JpZENv
bHVtbi5oIFwKICAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4RGF0YUdyaWRDb2x1bW5M
aXN0LmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhGaWxlLmggXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9BbmRyb2lkLm1rIGIvV2ViQ29yZS9BbmRyb2lkLm1rCmluZGV4IDhmZmQ3
NjcuLmRjZDk0Y2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5taworKysgYi9XZWJDb3Jl
L0FuZHJvaWQubWsKQEAgLTIzOCw2ICsyMzgsOCBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NB
TF9TUkNfRklMRVMpIFwKIAloaXN0b3J5L2FuZHJvaWQvSGlzdG9yeUl0ZW1BbmRyb2lkLmNwcCBc
CiAJXAogCWh0bWwvQmxvYi5jcHAgXAorCWh0bWwvQmxvYkJ1aWxkZXIuY3BwIFwKKwlodG1sL0J5
dGVTdG9yZS5jcHAgXAogCWh0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCBcCiAJaHRtbC9ET01Gb3Jt
RGF0YS5jcHAgXAogCWh0bWwvRmlsZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9BbmRyb2lk
LnY4YmluZGluZ3MubWsgYi9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawppbmRleCA1MTJi
NmNlLi4zM2M1NGFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawor
KysgYi9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tawpAQCAtODYsNiArODYsNyBAQCBMT0NB
TF9TUkNfRklMRVMgKz0gXAogCVwKIAliaW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNw
cCBcCiAJYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmFySW5mb0N1c3RvbS5jcHAgXAorCWJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJsb2JCdWlsZGVyQ3VzdG9tLmNwcCBcCiAJYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q1NTUnVsZUN1c3RvbS5jcHAgXAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwIFwKIAliaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZVNoZWV0
Q3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDdlNWY4M2IuLjA5ZGFiZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM5IEBACisyMDEwLTAzLTMx
ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IEJsb2JCdWlsZGVyIGRlZmlu
ZWQgaW4gRmlsZUFQSS9GaWxlV3JpdGVyIGRyYWZ0LgorICAgICAgICBodHRwOi8vZGV2LnczLm9y
Zy8yMDA5L2RhcC9maWxlLXN5c3RlbS9maWxlLXdyaXRlci5odG1sCisgICAgICAgIEFkZCBCbG9i
QnVpbGRlciBhbmQgQnl0ZVN0b3JlIHRoYXQgc3RvcmVzIGFjdHVhbCBieXRlIGFycmF5IGRhdGEK
KyAgICAgICAgZm9yIGEgbm9uLWZpbGUgYmFzZWQgYmxvYi4gIFRoZSBwYXRjaCBhbHNvIGFkZHMg
djggYW5kIGpzYworICAgICAgICBiaW5kaW5ncyBmb3IgQmxvYkJ1aWxkZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjU2OAorCisgICAgICAgIFRl
c3Q6IGh0dHAvdGVzdHMvbG9jYWwvc2VuZC1ibG9iLWJ5LWJsb2ItYnVpbGRlci5odG1sCisKKyAg
ICAgICAgKiBBbmRyb2lkLmRlcml2ZWQuanNjYmluZGluZ3MubWs6CisgICAgICAgICogQW5kcm9p
ZC5kZXJpdmVkLnY4YmluZGluZ3MubWs6CisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAg
KiBBbmRyb2lkLnY4YmluZGluZ3MubWs6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcjo6SlNCbG9i
QnVpbGRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEJsb2JCdWls
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCbG9iQnVpbGRlckNvbnN0cnVj
dG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNCbG9iQnVpbGRlckNvbnN0cnVjdG9y
OjpjbGFzc0luZm8pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmxvYkJ1aWxkZXJDdXN0b20u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTQmxvYkJ1aWxkZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OmJsb2JCdWlsZGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhCbG9iQnVpbGRlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VjhCbG9iQnVpbGRlcjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
OEJsb2JCdWlsZGVyOjphcHBlbmRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBodG1sL0Jsb2IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYjo6c2xpY2UpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6c3Ry
aW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUJsb2I6OkZpbGVCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVCbG9iOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVCbG9i
OjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVCbG9iOjpyZWFkRGlyZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVCbG9iOjpzbmFwc2hvdEVuZFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVCbG9iOjpzbGljZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFC
bG9iOjpEYXRhQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDb21iaW5lZEJsb2I6OkNvbWJpbmVk
QmxvYik6CisgICAgICAgIChXZWJDb3JlOjpDb21iaW5lZEJsb2I6OmFwcGVuZEJsb2IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tYmluZWRCbG9iOjphcHBlbmRCbG9iTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21iaW5lZEJsb2I6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tYmluZWRC
bG9iOjpyZWFkRGlyZWN0KToKKyAgICAgICAgKiBodG1sL0Jsb2IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2I6OmlzVXNpbmdGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmlzVXNpbmdE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmlzQ29tYmluZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYjo6dG9GaWxlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjp0b0RhdGFC
bG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnRvQ29tYmluZWRCbG9iKToKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2I6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6Omxlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbmFwc2hvdEVuZFBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2I6Om1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZUJsb2I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQmxvYjo6cGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlQmxvYjo6aXNVc2luZ0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZUJsb2I6OnRvRmlsZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUJsb2I6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVCbG9iOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZUJsb2I6Om1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUJs
b2I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhQmxvYjo6c2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhQmxvYjo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhQmxvYjo6
cmVhZERpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhQmxvYjo6aXNVc2luZ0RhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YUJsb2I6OnRvRGF0YUJsb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YUJsb2I6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFCbG9iOjpsZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YUJsb2I6OnNsaWNlSW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tYmluZWRCbG9iOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tYmlu
ZWRCbG9iOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbWJpbmVkQmxvYjo6aXNDb21iaW5l
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb21iaW5lZEJsb2I6OnRvQ29tYmluZWRCbG9iKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbWJpbmVkQmxvYjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbWJpbmVkQmxvYjo6c2xpY2VJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9CbG9iLmlkbDoK
KyAgICAgICAgKiBodG1sL0Jsb2JCdWlsZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpCbG9iQnVpbGRlcjo6QmxvYkJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxk
ZXI6On5CbG9iQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXcml0ZXJXaXRoRml4
TGluZUJyZWFrczo6ZmluYWxTdHJpbmdMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5n
V3JpdGVyV2l0aEZpeExpbmVCcmVha3M6OlN0cmluZ1dyaXRlcldpdGhGaXhMaW5lQnJlYWtzKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dyaXRlcldpdGhGaXhMaW5lQnJlYWtzOjp3cml0ZVRv
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JCdWlsZGVyOjphcHBlbmRTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxkZXI6OmFwcGVuZEJsb2IpOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYkJ1aWxkZXI6OmdldEJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRW5k
aW5nc1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxkZXI6OnNldEVuZGluZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxkZXI6OmVuZGluZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYkJ1aWxkZXI6OmdldEVuZGluZ0NoYXJzKToKKyAgICAgICAgKiBodG1sL0Jsb2JC
dWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxkZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRlcjo6KToKKyAgICAgICAgKiBodG1sL0Jsb2JC
dWlsZGVyLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9CeXRlU3RvcmUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkJ5dGVTdG9yZTo6Qnl0ZVN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJ5dGVTdG9yZTo6fkJ5dGVTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpCeXRlU3RvcmU6
OmFwcGVuZERpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCeXRlU3RvcmU6OnJlYWREaXJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TWVtY3B5V3JpdGVyOjpNZW1jcHlXcml0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtY3B5V3JpdGVyOjp3cml0ZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbWNweVJlYWRlcjo6TWVtY3B5UmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbWNw
eVJlYWRlcjo6cmVhZEZyb21CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qnl0ZVN0b3JlOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Qnl0ZVN0b3JlOjpyZWFkKToKKyAgICAgICAgKiBo
dG1sL0J5dGVTdG9yZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJ5dGVTdG9yZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJ5dGVTdG9yZTo6c2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCeXRlU3RvcmU6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkJ5dGVTdG9yZTo6UmVh
ZGVyOjp+UmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJ5dGVTdG9yZTo6V3JpdGVyOjp+V3Jp
dGVyKToKKyAgICAgICAgKiBodG1sL0RPTUZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUZvcm1EYXRhOjphcHBlbmQpOgorICAgICAgICAqIGh0bWwvRmlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAgICAgICAgKiBodG1sL0ZpbGUuaDoKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kRE9NRm9ybURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmQp
OgorCiAyMDEwLTAzLTMwICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgogCiAgICAgICAgIFt3eF0gQnVpbGQgZml4IGFmdGVyIG5ldyBsb2NhbGl6ZWQgc3RyaW5nIGFk
ZGl0aW9uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCBiMTcyMmMwLi4zYjU2Yzc0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpTQmFySW5mby5jcHAiCiAjaW5jbHVkZSAi
SlNCZWZvcmVMb2FkRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTQmxvYi5jcHAiCisjaW5jbHVkZSAi
SlNCbG9iQnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiSlNDYW52YXNHcmFkaWVudC5jcHAiCiAjaW5j
bHVkZSAiSlNDYW52YXNQYXR0ZXJuLmNwcCIKICNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDM2OTQyNzAuLjE1ZjkwMDggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTU0LDYgKzU0LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgQmFySW5mbyBc
CiAgICAgQmVmb3JlTG9hZEV2ZW50IFwKICAgICBCbG9iIFwKKyAgICBCbG9iQnVpbGRlciBcCiAg
ICAgQ0RBVEFTZWN0aW9uIFwKICAgICBDU1NDaGFyc2V0UnVsZSBcCiAgICAgQ1NTRm9udEZhY2VS
dWxlIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDllZTJhNzYuLjQzYWQzNmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTY4LDYgKzE2OCw3
IEBAIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50
LmlkbCBcCiAJV2ViQ29yZS9kb20vV2hlZWxFdmVudC5pZGwgXAogCVdlYkNvcmUvaHRtbC9CbG9i
LmlkbCBcCisJV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmlkbCBcCiAJV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEFycmF5LmlkbCBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFycmF5QnVm
ZmVyLmlkbCBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ5dGVBcnJheS5pZGwgXApAQCAt
MzU1LDYgKzM1Niw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9q
cy9HQ0NvbnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5o
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCbG9iQnVpbGRlckNvbnN0cnVjdG9yLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0Jsb2JCdWlsZGVyQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NEQVRBU2Vj
dGlvbkN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhR3JpZENvbHVtbkxp
c3RDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNl
LmNwcCBcCkBAIC05OTAsNiArOTk0LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9oaXN0b3J5L1BhZ2VDYWNoZS5oIFwKIAlXZWJDb3JlL2h0bWwvQmxvYi5jcHAgXAogCVdlYkNv
cmUvaHRtbC9CbG9iLmggXAorCVdlYkNvcmUvaHRtbC9CbG9iQnVpbGRlci5jcHAgXAorCVdlYkNv
cmUvaHRtbC9CbG9iQnVpbGRlci5oIFwKKwlXZWJDb3JlL2h0bWwvQnl0ZVN0b3JlLmNwcCBcCisJ
V2ViQ29yZS9odG1sL0J5dGVTdG9yZS5oIFwKIAlXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0Nv
bnRleHRBdHRyaWJ1dGVzLmggXAogCVdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQu
Y3BwIFwKIAlXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmggXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1MDll
ZDgxLi5kOTcxYjZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtODEsNiArODEsNyBAQAogICAgICAgICAgICAgJ2RvbS9XZWJL
aXRUcmFuc2l0aW9uRXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vV2hlZWxFdmVudC5pZGwn
LAogICAgICAgICAgICAgJ2h0bWwvQmxvYi5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvQmxvYkJ1
aWxkZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8uaWRs
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEFycmF5LmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViR0xBcnJheUJ1ZmZlci5pZGwnLApAQCAtNDc2LDYgKzQ3Nyw5IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U0Jsb2JCdWlsZGVyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAnLApAQCAtNjc3LDYgKzY4MSw3IEBACiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01EYXRhLmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF0dHJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhCYXJJbmZvQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkJ1aWxkZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNQaXhlbEFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xBcnJheUN1c3RvbS5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEFycmF5Q3VzdG9tLmNwcCcsCkBAIC0xMzU1
LDYgKzEzNjAsMTAgQEAKICAgICAgICAgICAgICdoaXN0b3J5L1BhZ2VDYWNoZS5oJywKICAgICAg
ICAgICAgICdodG1sL0Jsb2IuY3BwJywKICAgICAgICAgICAgICdodG1sL0Jsb2IuaCcsCisgICAg
ICAgICAgICAnaHRtbC9CbG9iQnVpbGRlci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQmxvYkJ1
aWxkZXIuaCcsCisgICAgICAgICAgICAnaHRtbC9CeXRlU3RvcmUuY3BwJywKKyAgICAgICAgICAg
ICdodG1sL0J5dGVTdG9yZS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEFycmF5
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xBcnJheS5oJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTEFycmF5QnVmZmVyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUucHJpIGIvV2ViQ29yZS9XZWJDb3JlLnByaQppbmRleCA5NTBjNzZiLi5lZTMw
YjEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcmkKQEAgLTI5MCw2ICsyOTAsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgIGRvbS9XZWJL
aXRUcmFuc2l0aW9uRXZlbnQuaWRsIFwKICAgICBkb20vV2hlZWxFdmVudC5pZGwgXAogICAgIGh0
bWwvQmxvYi5pZGwgXAorICAgIGh0bWwvQmxvYkJ1aWxkZXIuaWRsIFwKICAgICBodG1sL2NhbnZh
cy9XZWJHTEFycmF5LmlkbCBcCiAgICAgaHRtbC9jYW52YXMvV2ViR0xBcnJheUJ1ZmZlci5pZGwg
XAogICAgIGh0bWwvY2FudmFzL1dlYkdMQnl0ZUFycmF5LmlkbCBcCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA3MjMwMTI1Li4zZDIw
MmJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KQEAgLTI3OSw2ICsyNzksOSBAQCBTT1VSQ0VTICs9IFwKICAgICBiaW5kaW5ncy9qcy9E
T01XcmFwcGVyV29ybGQuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAg
XAogICAgIGJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0pT
QmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0pTQmxvYkJ1aWxk
ZXJDb25zdHJ1Y3Rvci5oIFwKKyAgICBiaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ3VzdG9tLmNw
cCBcCiAgICAgYmluZGluZ3MvanMvSlNDREFUQVNlY3Rpb25DdXN0b20uY3BwIFwKICAgICBiaW5k
aW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIFwKICAgICBiaW5kaW5n
cy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgXApAQCAtNTk4LDYgKzYw
MSw4IEBAIFNPVVJDRVMgKz0gXAogICAgIGhpc3RvcnkvcXQvSGlzdG9yeUl0ZW1RdC5jcHAgXAog
ICAgIGhpc3RvcnkvUGFnZUNhY2hlLmNwcCBcCiAgICAgaHRtbC9CbG9iLmNwcCBcCisgICAgaHRt
bC9CbG9iQnVpbGRlci5jcHAgXAorICAgIGh0bWwvQnl0ZVN0b3JlLmNwcCBcCiAgICAgaHRtbC9j
YW52YXMvQ2FudmFzR3JhZGllbnQuY3BwIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJu
LmNwcCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUGl4ZWxBcnJheS5jcHAgXApAQCAtMTAyNyw2
ICsxMDMyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxk
LmggXAogICAgIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmggXAogICAgIGJpbmRpbmdzL2pz
L0pTQXVkaW9Db25zdHJ1Y3Rvci5oIFwKKyAgICBiaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ29u
c3RydWN0b3IuaCBcCiAgICAgYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9t
LmggXAogICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIFwKICAgICBi
aW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIFwKQEAgLTEzMDQsNiAr
MTMxMCw4IEBAIEhFQURFUlMgKz0gXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAgICAg
aGlzdG9yeS9QYWdlQ2FjaGUuaCBcCiAgICAgaHRtbC9CbG9iLmggXAorICAgIGh0bWwvQmxvYkJ1
aWxkZXIuaCBcCisgICAgaHRtbC9CeXRlU3RvcmUuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFz
R3JhZGllbnQuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oIFwKICAgICBodG1s
L2NhbnZhcy9DYW52YXNQaXhlbEFycmF5LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggOTQ5NjdkNS4uZTYxNjllMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC03NzcsNiArNzc3LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8
RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxE
ZXJpdmVkU291cmNlc1xKU0Jsb2JCdWlsZGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29y
ZVxEZXJpdmVkU291cmNlc1xKU0Jsb2JCdWlsZGVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ2FudmFzR3JhZGllbnQuY3BwIg0KIAkJCQk+DQog
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTMwMDk3LDYgKzMwMTA1LDIyIEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQmxvYkJ1
aWxkZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxCbG9iQnVpbGRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxCeXRlU3RvcmUuY3BwIg0KKwkJCQk+DQor
CQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxCeXRlU3Rv
cmUuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcY2FudmFzXENhbnZhc0dyYWRpZW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4MGE2ZmIu
LmQwYzljMzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMjA1LDYgKzIyMDUsMTYgQEAKIAkJODVGNzRFMEEwQUE4REY4QzAwMERDMjg0IC8qIERPTUNT
U1Vua25vd25SdWxlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTAzMkRENTBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTVW5r
bm93blJ1bGUuaCAqLzsgfTsKIAkJODVGRjMxNUEwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1RkYzMTU4MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50LmggKi87IH07CiAJ
CTg1RkYzMTVCMEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGRjMxNTkwQUFGQkZDQjAw
Mzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gKi87IH07CisJCTg5NEY5RUFFMTE2MUQwMTkw
MERBQTM1NyAvKiBKU0Jsb2JCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg5NEY5RUFDMTE2MUQwMTkwMERBQTM1NyAvKiBKU0Jsb2JCdWls
ZGVyLmNwcCAqLzsgfTsKKwkJODk0RjlFQUYxMTYxRDAxOTAwREFBMzU3IC8qIEpTQmxvYkJ1aWxk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5NEY5
RUFEMTE2MUQwMTkwMERBQTM1NyAvKiBKU0Jsb2JCdWlsZGVyLmggKi87IH07CisJCTg5OEJFRDIw
MTE2MThEMzgwMEE2RUEwNiAvKiBCbG9iQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OThCRUQxRjExNjE4RDM4MDBBNkVBMDYgLyogQmxv
YkJ1aWxkZXIuY3BwICovOyB9OworCQk4OThCRUQyMjExNjE4RDQyMDBBNkVBMDYgLyogQmxvYkJ1
aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5
OEJFRDIxMTE2MThENDIwMEE2RUEwNiAvKiBCbG9iQnVpbGRlci5oICovOyB9OworCQk4OThCRUQy
NDExNjE4RDRCMDBBNkVBMDYgLyogQnl0ZVN0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5OEJFRDIzMTE2MThENEIwMEE2RUEwNiAvKiBCeXRl
U3RvcmUuY3BwICovOyB9OworCQk4OThCRUQyNjExNjE4RDU2MDBBNkVBMDYgLyogQnl0ZVN0b3Jl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OThCRUQy
NTExNjE4RDU2MDBBNkVBMDYgLyogQnl0ZVN0b3JlLmggKi87IH07CisJCTg5OEJFRDI4MTE2MThF
QzEwMEE2RUEwNiAvKiBCbG9iQnVpbGRlci5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5OEJFRDI3MTE2MThFQzEwMEE2RUEwNiAvKiBCbG9iQnVp
bGRlci5pZGwgKi87IH07CisJCTg5QTM1RDVBMTE2MTg5MjUwMEU3MDFFNiAvKiBKU0Jsb2JCdWls
ZGVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5QTM1RDU5MTE2MTg5MjUwMEU3MDFFNiAvKiBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0
b3IuaCAqLzsgfTsKKwkJODlBMzVENUMxMTYxODk0QTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxkZXJD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODlBMzVENUIxMTYxODk0QTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxkZXJDdXN0b20uY3BwICovOyB9
OworCQk4OUEzNUQ1RTExNjE4OTU5MDBFNzAxRTYgLyogSlNCbG9iQnVpbGRlckNvbnN0cnVjdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5QTM1
RDVEMTE2MTg5NTkwMEU3MDFFNiAvKiBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuY3BwICovOyB9
OwogCQk5MzAyQjBCRDBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDJCMEJDMEQ3OUY4MjkwMEM3
RUU4MyAvKiBQYWdlR3JvdXAuY3BwICovOyB9OwogCQk5MzAyQjBCRjBENzlGODJDMDBDN0VFODMg
LyogUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzAyQjBCRTBENzlGODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMwNUIyNEQwOThGMUI2QjAw
QzI4ODU1IC8qIFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzY0NSw2ICs3NjU1LDE2IEBA
CiAJCTg1RjU2QTc5MEE5OENFMzcwMEFEQjYwQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUZGMzE1ODBB
QUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NS2V5Ym9hcmRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NUZGMzE1OTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01LZXlib2FyZEV2ZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTRGOUVBQzExNjFEMDE5MDBEQUEz
NTcgLyogSlNCbG9iQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0Jsb2JCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk0
RjlFQUQxMTYxRDAxOTAwREFBMzU3IC8qIEpTQmxvYkJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNCbG9iQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4OThCRUQxRjExNjE4RDM4MDBBNkVBMDYgLyogQmxvYkJ1aWxkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvYkJ1aWxkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4OThCRUQyMTExNjE4RDQyMDBBNkVBMDYgLyogQmxvYkJ1
aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvYkJ1aWxkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk4QkVEMjMxMTYxOEQ0QjAwQTZFQTA2IC8q
IEJ5dGVTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRl
U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OThCRUQyNTExNjE4RDU2
MDBBNkVBMDYgLyogQnl0ZVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5dGVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OThCRUQyNzExNjE4
RUMxMDBBNkVBMDYgLyogQmxvYkJ1aWxkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJs
b2JCdWlsZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODlBMzVENTkxMTYx
ODkyNTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODlBMzVENUIxMTYxODk0QTAwRTcwMUU2IC8qIEpTQmxvYkJ1
aWxkZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNC
bG9iQnVpbGRlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5QTM1
RDVEMTE2MTg5NTkwMEU3MDFFNiAvKiBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCbG9iQnVpbGRlckNvbnN0cnVjdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwMkIwQkMwRDc5RjgyOTAwQzdF
RTgzIC8qIFBhZ2VHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYWdlR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzAyQjBCRTBE
NzlGODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhZ2VHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA1QjI0
QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTI0LDYgKzEy
OTQ0LDExIEBACiAJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1sICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4OThCRUQyNzExNjE4RUMxMDBB
NkVBMDYgLyogQmxvYkJ1aWxkZXIuaWRsICovLAorCQkJCTg5OEJFRDI1MTE2MThENTYwMEE2RUEw
NiAvKiBCeXRlU3RvcmUuaCAqLywKKwkJCQk4OThCRUQyMzExNjE4RDRCMDBBNkVBMDYgLyogQnl0
ZVN0b3JlLmNwcCAqLywKKwkJCQk4OThCRUQyMTExNjE4RDQyMDBBNkVBMDYgLyogQmxvYkJ1aWxk
ZXIuaCAqLywKKwkJCQk4OThCRUQxRjExNjE4RDM4MDBBNkVBMDYgLyogQmxvYkJ1aWxkZXIuY3Bw
ICovLAogCQkJCUE0M0JGNTk2MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50
LmNwcCAqLywKIAkJCQlBNDNCRjU5NzExNDkyOTBBMDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxl
bWVudC5oICovLAogCQkJCTQ5NDg0RkFFMTAyQ0YwMUUwMDE4N0REMyAvKiBjYW52YXMgKi8sCkBA
IC0xMzI3MCw2ICsxMzI5NSw4IEBACiAJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAvKiBIVE1M
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4OTRGOUVB
QzExNjFEMDE5MDBEQUEzNTcgLyogSlNCbG9iQnVpbGRlci5jcHAgKi8sCisJCQkJODk0RjlFQUQx
MTYxRDAxOTAwREFBMzU3IC8qIEpTQmxvYkJ1aWxkZXIuaCAqLywKIAkJCQkyRTJEOTlDQjEwRTJC
QkRBMDA0OTYzMzcgLyogSlNCbG9iLmNwcCAqLywKIAkJCQkyRTJEOTlDQzEwRTJCQkRBMDA0OTYz
MzcgLyogSlNCbG9iLmggKi8sCiAJCQkJNjVERjMyMzMwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2Fu
dmFzR3JhZGllbnQuY3BwICovLApAQCAtMTQ5MTYsNiArMTQ5NDMsNyBAQAogCQlCQzRFREVGNzBD
MDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk4OUEzNUQ1QjExNjE4OTRBMDBFNzAxRTYgLyogSlNCbG9iQnVpbGRl
ckN1c3RvbS5jcHAgKi8sCiAJCQkJNDE1QjdDNTQwRkY1OThFNjAwNjc3MEY3IC8qIEpTQWJzdHJh
Y3RXb3JrZXJDdXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBK
U0F0dHJDdXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCkBAIC0xNTI3MCw2ICsxNTI5OCw4
IEBACiAJCUJDQ0U1OEI0MTA2MUU5MjUwMDhGQjM1QSAvKiBDb25zdHJ1Y3RvcnMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTg5QTM1RDVEMTE2MTg5NTkw
MEU3MDFFNiAvKiBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTg5QTM1RDU5
MTE2MTg5MjUwMEU3MDFFNiAvKiBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuaCAqLywKIAkJCQlF
NEVFRkZDNjBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9yLmNwcCAqLywKIAkJ
CQlFNEVFRkZDNzBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9yLmggKi8sCiAJ
CQkJRTBGRUYzNzFCNzdDNTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5j
cHAgKi8sCkBAIC0xODc2OCw2ICsxODc5OCwxMCBAQAogCQkJCUU0Nzc4QjgwMTE1QTU4MUEwMEI1
RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYwMDExNUZG
NkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg0OTlBNTE1MTE1RkIzMzAwMEY1NjZFMyAvKiBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODlBMzVENUExMTYxODkyNTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxk
ZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODk4QkVEMjIxMTYxOEQ0MjAwQTZF
QTA2IC8qIEJsb2JCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4OThCRUQyNjExNjE4RDU2
MDBBNkVBMDYgLyogQnl0ZVN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4OTRGOUVBRjExNjFE
MDE5MDBEQUEzNTcgLyogSlNCbG9iQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODg3MSw2
ICsxODkwNSw3IEBACiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6
b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMkUwODg4QzQxMTQ4ODNBOTAw
QUY0MjY1IC8qIERPTUZvcm1EYXRhLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJODk4QkVEMjgx
MTYxOEVDMTAwQTZFQTA2IC8qIEJsb2JCdWlsZGVyLmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
MDk4Miw2ICsyMTAxNywxMSBAQAogCQkJCTYyQ0QzMjU5MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0
b21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDc3OEI3RjExNUE1ODFBMDBCNUQzNzIg
LyogSlNDdXN0b21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDk5QTUxNDExNUZCMzMw
MDBGNTY2RTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJODlBMzVENUMxMTYxODk0QTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxkZXJDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJODlBMzVENUUxMTYxODk1OTAwRTcwMUU2IC8qIEpTQmxvYkJ1aWxk
ZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4OThCRUQyMDExNjE4RDM4MDBB
NkVBMDYgLyogQmxvYkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODk4QkVEMjQxMTYx
OEQ0QjAwQTZFQTA2IC8qIEJ5dGVTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4OTRGOUVB
RTExNjFEMDE5MDBEQUEzNTcgLyogSlNCbG9iQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCA1YTA4MjBiLi5h
OTMzYWNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBA
IC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNBdHRyQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0F1ZGlvQ29uc3RydWN0b3Iu
Y3BwIgorI2luY2x1ZGUgIkpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5jcHAiCisjaW5jbHVkZSAi
SlNCbG9iQnVpbGRlckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDREFUQVNlY3Rpb25DdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTQ1NTUnVsZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDU1NSdWxl
TGlzdEN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkJ1
aWxkZXJDb25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkJ1aWxkZXJD
b25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRmZmFh
ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQnVpbGRlckNv
bnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiQmxvYkJ1aWxk
ZXIuaCIKKyNpbmNsdWRlICJKU0Jsb2JCdWlsZGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBKU0Jsb2JC
dWlsZGVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkJsb2JCdWlsZGVyQ29uc3RydWN0b3IiLCAw
LCAwLCAwIH07CisKK0pTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcjo6SlNCbG9iQnVpbGRlckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpT
QmxvYkJ1aWxkZXJQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7Cisg
ICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMs
IDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBKU09i
amVjdCogY29uc3RydWN0QmxvYkJ1aWxkZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29u
c3RydWN0b3IsIGNvbnN0IEFyZ0xpc3QmKQoreworICAgIEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rv
cioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcio+
KGNvbnN0cnVjdG9yKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0ganND
b25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgUmVmZXJlbmNlRXJyb3IsICJCbG9iQnVp
bGRlciBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIik7CisK
KyAgICBSZWZQdHI8QmxvYkJ1aWxkZXI+IGJsb2JCdWlsZGVyID0gQmxvYkJ1aWxkZXI6OmNyZWF0
ZSgpOworICAgIHJldHVybiBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGpzQ29uc3Ry
dWN0b3ItPmdsb2JhbE9iamVjdCgpLCBCbG9iQnVpbGRlciwgYmxvYkJ1aWxkZXIuZ2V0KCkpOwor
fQorCitDb25zdHJ1Y3RUeXBlIEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0
RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEu
bmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0QmxvYkJ1aWxkZXI7CisgICAgcmV0dXJuIENvbnN0
cnVjdFR5cGVIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5oIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi45ZWRkZTVhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSlNCbG9iQnVpbGRlckNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNCbG9iQnVpbGRlckNvbnN0
cnVjdG9yX2gKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEpTQmxvYkJ1aWxkZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1
Y3Rvck9iamVjdCB7CisgIHB1YmxpYzoKKyAgICBKU0Jsb2JCdWlsZGVyQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyBzX2luZm87CisKKyAgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIEpTQzo6Q29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYpOworICAgIHZpcnR1
YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2lu
Zm87IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpTQmxvYkJ1
aWxkZXJDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxv
YkJ1aWxkZXJDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ3Vz
dG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjIwODk4Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JCdWlsZGVyQ3VzdG9tLmNw
cApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQmxv
YkJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJCbG9iQnVpbGRlci5o
IgorI2luY2x1ZGUgIkpTQmxvYi5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBDdXN0b20gZnVu
Y3Rpb25zCitKU1ZhbHVlIEpTQmxvYkJ1aWxkZXI6OmFwcGVuZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKKyAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50
cyIpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSlNWYWx1ZSB2YWwgPSBhcmdz
LmF0KDApOworICAgIGlmICh2YWwuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgaW1wbCgp
LT5hcHBlbmRTdHJpbmcoU3RyaW5nKCIiKSwgZWMpOworICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0
cygmSlNCbG9iOjpzX2luZm8pKQorICAgICAgICBpbXBsKCktPmFwcGVuZEJsb2IodG9CbG9iKHZh
bCkpOworICAgIGVsc2UKKyAgICAgICAgaW1wbCgpLT5hcHBlbmRTdHJpbmcodmFsLnRvU3RyaW5n
KGV4ZWMpLCBlYyk7CisKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGJhNTZlMjguLmQ3YjY3YWIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9yeS5oIgogI2lu
Y2x1ZGUgIkpTQXVkaW9Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQmxvYkJ1aWxkZXJDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRGF0YWJhc2UuaCIKICNpbmNsdWRlICJKU0RhdGFiYXNl
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCkBAIC02NTgsNiArNjU5
LDExIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OndlYlNvY2tldChFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiB9CiAjZW5kaWYKIAorSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YmxvYkJ1aWxkZXIoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0Jsb2JC
dWlsZGVyQ29uc3RydWN0b3I+KGV4ZWMsIHRoaXMpOworfQorCiAvLyBDdXN0b20gZnVuY3Rpb25z
CiAKIC8vIEhlbHBlciBmb3Igd2luZG93Lm9wZW4oKSBhbmQgd2luZG93LnNob3dNb2RhbERpYWxv
ZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JCdWlsZGVy
Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkJ1aWxkZXJDdXN0
b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmODM1NGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JCdWlsZGVyQ3Vz
dG9tLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IlY4QmxvYkJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4
QmxvYi5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEJsb2JCdWls
ZGVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uQmxvYkJ1aWxkZXIuQ29uc3RydWN0b3IiKTsKKyAgICBpZiAoIWFy
Z3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2Jq
ZWN0IGN1c3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOworCisgICAg
UmVmUHRyPEJsb2JCdWlsZGVyPiBibG9iQnVpbGRlciA9IEJsb2JCdWlsZGVyOjpjcmVhdGUoKTsK
KworICAgIC8vIFNldHVwIHRoZSBzdGFuZGFyZCB3cmFwcGVyIG9iamVjdCBpbnRlcm5hbCBmaWVs
ZHMuCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZv
LCBibG9iQnVpbGRlci5nZXQoKSk7CisKKyAgICAvLyBBZGQgb2JqZWN0IHRvIHRoZSB3cmFwcGVy
IG1hcC4KKyAgICBibG9iQnVpbGRlci0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dy
YXBwZXJGb3JET01PYmplY3QoYmxvYkJ1aWxkZXIuZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOworCisgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7
Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEJsb2JCdWlsZGVyOjphcHBlbmRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkJsb2JC
dWlsZGVyLmFwcGVuZCIpOworICAgIEJsb2JCdWlsZGVyKiBibG9iQnVpbGRlciA9IFY4QmxvYkJ1
aWxkZXI6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
Ik5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmcgPSBhcmdzWzBdOworICAgIGlmIChWOEJsb2I6Okhhc0luc3Rh
bmNlKGFyZykpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CisgICAgICAgIEJsb2IqIGJsb2IgPSBWOEJs
b2I6OnRvTmF0aXZlKG9iamVjdCk7CisgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmRCbG9iKGJs
b2IpOworICAgIH0gZWxzZSB7CisgICAgICAgIFN0cmluZyBtc2cgPSB0b1dlYkNvcmVTdHJpbmco
YXJnKTsKKyAgICAgICAgYmxvYkJ1aWxkZXItPmFwcGVuZFN0cmluZyhtc2csIGVjKTsKKyAgICB9
CisKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKKworICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA2
MjE1ZDM4Li5lOWEwZDUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01XaW5kb3dDdXN0b20uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKIAorI2luY2x1ZGUgIkJsb2JCdWlsZGVyLmgiCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01U
aW1lci5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Jsb2IuY3BwIGIvV2ViQ29yZS9odG1s
L0Jsb2IuY3BwCmluZGV4IDgzYmJkYzAuLjc3N2YwZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9CbG9iLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYi5jcHAKQEAgLTI5LDE4ICsyOSw1MiBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIkJsb2IuaCIKIAogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQkxPQl9TTElDRSkKIGNvbnN0IGludCBCbG9i
Ojp0b0VuZE9mRmlsZSA9IC0xOwogY29uc3QgZG91YmxlIEJsb2I6OmRvTm90Q2hlY2tGaWxlQ2hh
bmdlID0gMDsKKworUGFzc1JlZlB0cjxCbG9iPiBCbG9iOjpzbGljZShsb25nIGxvbmcgb2Zmc2V0
LCBsb25nIGxvbmcgbGVuZ3RoKSBjb25zdAoreworICAgIC8vIENsYW1wIHRoZSByYW5nZSBpZiBp
dCBleGNlZWRzIHRoZSBzaXplIGxpbWl0LgorICAgIG9mZnNldCArPSBzdGFydCgpOworICAgIGlm
IChvZmZzZXQgPiBzbmFwc2hvdEVuZFBvc2l0aW9uKCkpIHsKKyAgICAgICAgb2Zmc2V0ID0gMDsK
KyAgICAgICAgbGVuZ3RoID0gMDsKKyAgICB9IGVsc2UgaWYgKG9mZnNldCArIGxlbmd0aCA+IHNu
YXBzaG90RW5kUG9zaXRpb24oKSkKKyAgICAgICAgbGVuZ3RoID0gc25hcHNob3RFbmRQb3NpdGlv
bigpIC0gb2Zmc2V0OworCisgICAgaWYgKG9mZnNldCA8IDApCisgICAgICAgIG9mZnNldCA9IDA7
CisgICAgaWYgKGxlbmd0aCA8IDApCisgICAgICAgIGxlbmd0aCA9IDA7CisKKyAgICByZXR1cm4g
YWRvcHRSZWYoc2xpY2VJbnRlcm5hbChvZmZzZXQsIGxlbmd0aCkpOworfQogI2VuZGlmCiAKLUJs
b2I6OkJsb2IoY29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIEJsb2I6OnN0cmluZ1ZhbHVlKCkg
Y29uc3QKK3sKKyAgICAvLyBMZXQncyBhc3N1bWUgd2Ugb25seSBjYXJlIHVwIHRvIHNpemVfdCdz
IG1heCBzaXplIG9mIGNvbnRlbnQuCisgICAgc2l6ZV90IG91dHB1dExlbmd0aCA9ICBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNpemUoKSk7CisgICAgaWYgKHNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCkgLSAxKQorICAgICAgICBvdXRwdXRMZW5ndGggPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSAxKTsKKyAgICBW
ZWN0b3I8Y2hhcj4gb3V0KG91dHB1dExlbmd0aCArIDEpOworICAgIHJlYWQob3V0LmRhdGEoKSwg
b3V0cHV0TGVuZ3RoKTsKKyAgICBvdXRbb3V0cHV0TGVuZ3RoXSA9IDA7CisgICAgcmV0dXJuIFN0
cmluZyhvdXQuZGF0YSgpKTsKK30KKworLy8gRmlsZUJsb2IgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlsZUJs
b2I6OkZpbGVCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICA6IG1fcGF0aChwYXRoKQogI2lm
IEVOQUJMRShCTE9CX1NMSUNFKQogICAgICwgbV9zdGFydCgwKQpAQCAtNTMsNyArODcsNyBAQCBC
bG9iOjpCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCkKIH0KIAogI2lmIEVOQUJMRShCTE9CX1NMSUNF
KQotQmxvYjo6QmxvYihjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGxlbmd0aCwgbG9uZyBsb25nIHNuYXBzaG90U2l6ZSwgZG91YmxlIHNuYXBzaG90TW9kaWZp
Y2F0aW9uVGltZSkKK0ZpbGVCbG9iOjpGaWxlQmxvYihjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcg
bG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgbG9uZyBsb25nIHNuYXBzaG90U2l6ZSwgZG91
YmxlIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSkKICAgICA6IG1fcGF0aChwYXRoKQogICAgICwg
bV9zdGFydChzdGFydCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTYxLDExICs5NSwxMiBA
QCBCbG9iOjpCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgbGVuZ3RoLCBsb25nIGxvbmcgc25hcAogICAgICwgbV9zbmFwc2hvdFNpemUoc25hcHNob3RT
aXplKQogICAgICwgbV9zbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUoc25hcHNob3RNb2RpZmljYXRp
b25UaW1lKQogewotICAgIEFTU0VSVChzdGFydCA+PSAwICYmIGxlbmd0aCA+PSAwICYmIHN0YXJ0
ICsgbGVuZ3RoIDw9IHNuYXBzaG90U2l6ZSAmJiBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUpOwor
ICAgIC8vIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSBjYW4gYmUgMCB3aGVuIHRoZSBmaWxlIGlz
IGFscmVhZHkgcmVtb3ZlZC4KKyAgICBBU1NFUlQoc3RhcnQgPj0gMCAmJiBsZW5ndGggPj0gMCAm
JiBzdGFydCArIGxlbmd0aCA8PSBzbmFwc2hvdFNpemUpOwogfQogI2VuZGlmCiAKLXVuc2lnbmVk
IGxvbmcgbG9uZyBCbG9iOjpzaXplKCkgY29uc3QKK3Vuc2lnbmVkIGxvbmcgbG9uZyBGaWxlQmxv
Yjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEphdmFTY3JpcHQgY2Fubm90IHJlcHJl
c2VudCBzaXplcyBhcyBsYXJnZSBhcyB1bnNpZ25lZCBsb25nIGxvbmcsIHdlIG5lZWQgdG8KICAg
ICAvLyBjb21lIHVwIHdpdGggYW4gZXhjZXB0aW9uIHRvIHRocm93IGlmIGZpbGUgc2l6ZSBpcyBu
b3QgcmVwcmVzZXRhYmxlLgpAQCAtNzksNDAgKzExNCwxNDIgQEAgdW5zaWduZWQgbG9uZyBsb25n
IEJsb2I6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
IGxvbmc+KHNpemUpOwogfQogCitpbnQ2NF90IEZpbGVCbG9iOjpyZWFkKGNoYXIqLCBzaXplX3Qp
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFNob3VsZCBiZSBpbXBsZW1lbnRlZCB3aGVuIEZpbGVS
ZWFkZXIncyB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGJlY29tZXMgcmVhZHkuICBUaGlzIHdv
bid0IGJlIGNhbGxlZCBpbiBub3JtYWwgY2FzZXMgYnV0IENvbWJpbmVkQmxvYiBtYXkgY2FsbCBy
ZWFkKCkgcmVjdXJzaXZlbHkgd2hlbiBhIEZpbGVCbG9iIGlzIGNvbWJpbmVkIHdpdGggRGF0YUJs
b2JzIHZpYSBCbG9iQnVpbGRlci4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAt
MTsKK30KKworaW50NjRfdCBGaWxlQmxvYjo6cmVhZERpcmVjdChSZWFkZXIqLCBpbnQ2NF90KSBj
b25zdAoreworICAgIC8vIEZJWE1FCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
LTE7Cit9CisKICNpZiBFTkFCTEUoQkxPQl9TTElDRSkKLVBhc3NSZWZQdHI8QmxvYj4gQmxvYjo6
c2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoKSBjb25zdAorbG9uZyBsb25n
IEZpbGVCbG9iOjpzbmFwc2hvdEVuZFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9zbmFw
c2hvdENhcHR1cmVkKQorICAgICAgICByZXR1cm4gbV9zbmFwc2hvdFNpemU7CisgICAgbG9uZyBs
b25nIHNuYXBzaG90U2l6ZSA9IDA7CisgICAgaWYgKCFnZXRGaWxlU2l6ZShtX3BhdGgsIHNuYXBz
aG90U2l6ZSkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gc25hcHNob3RTaXplOwor
fQorCitCbG9iKiBGaWxlQmxvYjo6c2xpY2VJbnRlcm5hbChsb25nIGxvbmcgc3RhcnQsIGxvbmcg
bG9uZyBsZW5ndGgpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiB3ZSBzbGljZSBhIGZpbGUgZm9yIHRo
ZSBmaXJzdCB0aW1lLCB3ZSBvYnRhaW4gYSBzbmFwc2hvdCBvZiB0aGUgZmlsZSBieSBjYXB0dXJp
bmcgaXRzIGN1cnJlbnQgc2l6ZSBhbmQgbW9kaWZpY2F0aW9uIHRpbWUuCiAgICAgLy8gVGhlIG1v
ZGlmaWNhdGlvbiB0aW1lIHdpbGwgYmUgdXNlZCB0byB2ZXJpZnkgaWYgdGhlIGZpbGUgaGFzIGJl
ZW4gY2hhbmdlZCBvciBub3QsIHdoZW4gdGhlIHVuZGVybHlpbmcgZGF0YSBhcmUgYWNjZXNzZWQu
Ci0gICAgbG9uZyBsb25nIHNuYXBzaG90U2l6ZTsKICAgICBkb3VibGUgc25hcHNob3RNb2RpZmlj
YXRpb25UaW1lOwotICAgIGlmIChtX3NuYXBzaG90Q2FwdHVyZWQpIHsKLSAgICAgICAgc25hcHNo
b3RTaXplID0gbV9zbmFwc2hvdFNpemU7CisgICAgbG9uZyBsb25nIHNuYXBzaG90U2l6ZSA9IHNu
YXBzaG90RW5kUG9zaXRpb24oKTsKKyAgICBpZiAobV9zbmFwc2hvdENhcHR1cmVkKQogICAgICAg
ICBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUgPSBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZTsK
LSAgICB9IGVsc2UgeworICAgIGVsc2UgewogICAgICAgICAvLyBJZiB3ZSBmYWlsIHRvIHJldHJp
ZXZlIHRoZSBzaXplIG9yIG1vZGlmaWNhdGlvbiB0aW1lLCBwcm9iYWJseSBkdWUgdG8gdGhhdCB0
aGUgZmlsZSBoYXMgYmVlbiBkZWxldGVkLCBhbiBlbXB0eSBibG9iIHdpbGwgYmUgcmV0dXJuZWQu
CiAgICAgICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgICAgICBpZiAoIWdldEZpbGVT
aXplKG1fcGF0aCwgc25hcHNob3RTaXplKSB8fCAhZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV9w
YXRoLCBtb2RpZmljYXRpb25UaW1lKSkgeworICAgICAgICBpZiAoc25hcHNob3RTaXplID09IC0x
IHx8ICFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgsIG1vZGlmaWNhdGlvblRpbWUpKSB7
CiAgICAgICAgICAgICBzbmFwc2hvdFNpemUgPSAwOwogICAgICAgICAgICAgc25hcHNob3RNb2Rp
ZmljYXRpb25UaW1lID0gMDsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzbmFwc2hvdE1v
ZGlmaWNhdGlvblRpbWUgPSBtb2RpZmljYXRpb25UaW1lOwogICAgIH0KIAotICAgIC8vIENsYW1w
IHRoZSByYW5nZSBpZiBpdCBleGNlZWRzIHRoZSBzaXplIGxpbWl0LgorICAgIHJldHVybiBzdGF0
aWNfY2FzdDxCbG9iKj4obmV3IEZpbGVCbG9iKG1fcGF0aCwgc3RhcnQsIGxlbmd0aCwgc25hcHNo
b3RTaXplLCBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUpKTsKK30KKyNlbmRpZgorCisvLyBEYXRh
QmxvYiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitEYXRhQmxvYjo6RGF0YUJsb2IoTm9uTnVsbFBhc3NSZWZQdHI8
Qnl0ZVN0b3JlPiBkYXRhKQorICAgIDogbV9kYXRhKGRhdGEpCisgICAgLCBtX3N0YXJ0KDApCisg
ICAgLCBtX2xlbmd0aChtX2RhdGEtPnNpemUoKSkKK3sKK30KKworI2lmIEVOQUJMRShCTE9CX1NM
SUNFKQorRGF0YUJsb2I6OkRhdGFCbG9iKE5vbk51bGxQYXNzUmVmUHRyPEJ5dGVTdG9yZT4gZGF0
YSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoKQorICAgIDogbV9kYXRhKGRhdGEp
CisgICAgLCBtX3N0YXJ0KHN0YXJ0KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQoreworfQorI2Vu
ZGlmCisKKy8vIENvbWJpbmVkQmxvYiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvbWJpbmVkQmxvYjo6Q29tYmluZWRC
bG9iKGNvbnN0IFZlY3RvcjxSZWZQdHI8QmxvYj4gPiYgYmxvYkxpc3QpCisgICAgOiBtX3RvdGFs
U2l6ZSgwKQoreworICAgIGFwcGVuZEJsb2JMaXN0KGJsb2JMaXN0KTsKK30KKworI2lmIEVOQUJM
RShCTE9CX1NMSUNFKQorQ29tYmluZWRCbG9iOjpDb21iaW5lZEJsb2IoY29uc3QgVmVjdG9yPFJl
ZlB0cjxCbG9iPiA+JiBibG9iTGlzdCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3Ro
KQorICAgIDogbV90b3RhbFNpemUoMCkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgb2Zmc2V0
ID0gc3RhcnQ7CiAgICAgaWYgKHN0YXJ0IDwgMCkKLSAgICAgICAgc3RhcnQgPSAwOworICAgICAg
ICBvZmZzZXQgPSAwOwogICAgIGlmIChsZW5ndGggPCAwKQotICAgICAgICBsZW5ndGggPSAwOwor
ICAgICAgICByZXR1cm47CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoOyBpIDwgYmxvYkxp
c3Quc2l6ZSgpICYmIG9mZnNldCA+PSBibG9iTGlzdFtpXS0+c2l6ZSgpOyArK2kpCisgICAgICAg
IG9mZnNldCAtPSBibG9iTGlzdFtpXS0+c2l6ZSgpOworICAgIGZvciAoOyBsZW5ndGggPiAwICYm
IGkgPCBibG9iTGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICBhcHBlbmRCbG9iKGJsb2JMaXN0
W2ldLT5zbGljZShvZmZzZXQsIGxlbmd0aCkpOworICAgICAgICBsZW5ndGggLT0gbV9ibG9iTGlz
dC5sYXN0KCktPnNpemUoKTsKKyAgICAgICAgaWYgKG9mZnNldCA+IDApCisgICAgICAgICAgICBv
ZmZzZXQgPSAwOworICAgIH0KK30KKyNlbmRpZgogCi0gICAgaWYgKHN0YXJ0ID4gc25hcHNob3RT
aXplKSB7Ci0gICAgICAgIHN0YXJ0ID0gMDsKLSAgICAgICAgbGVuZ3RoID0gMDsKLSAgICB9IGVs
c2UgaWYgKHN0YXJ0ICsgbGVuZ3RoID4gc25hcHNob3RTaXplKQotICAgICAgICBsZW5ndGggPSBz
bmFwc2hvdFNpemUgLSBzdGFydDsKK3ZvaWQgQ29tYmluZWRCbG9iOjphcHBlbmRCbG9iKE5vbk51
bGxQYXNzUmVmUHRyPEJsb2I+IGJsb2IpCit7CisgICAgaWYgKGJsb2ItPmlzQ29tYmluZWQoKSkK
KyAgICAgICAgYXBwZW5kQmxvYkxpc3Qoc3RhdGljX2Nhc3Q8Q29tYmluZWRCbG9iKj4oYmxvYi5n
ZXQoKSktPm1fYmxvYkxpc3QpOworICAgIGVsc2UgeworICAgICAgICBtX3RvdGFsU2l6ZSArPSBi
bG9iLT5zaXplKCk7CisgICAgICAgIG1fYmxvYkxpc3QuYXBwZW5kKGJsb2IpOworICAgIH0KK30K
IAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYihtX3BhdGgsIG1fc3RhcnQgKyBzdGFydCwg
bGVuZ3RoLCBzbmFwc2hvdFNpemUsIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSkpOwordm9pZCBD
b21iaW5lZEJsb2I6OmFwcGVuZEJsb2JMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8QmxvYj4gPiYg
YmxvYkxpc3QpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9iTGlzdC5zaXplKCk7
ICsraSkKKyAgICAgICAgYXBwZW5kQmxvYihibG9iTGlzdFtpXSk7Cit9CisKK2ludDY0X3QgQ29t
YmluZWRCbG9iOjpyZWFkKGNoYXIqIG91dCwgc2l6ZV90IG1heExlbmd0aCkgY29uc3QKK3sKKyAg
ICBpZiAobWF4TGVuZ3RoID4gbV90b3RhbFNpemUpCisgICAgICAgIG1heExlbmd0aCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4obV90b3RhbFNpemUpOworICAgIGludDY0X3QgdG90YWxTaXplID0gMDsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYmxvYkxpc3Quc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgaW50NjRfdCBzaXplID0gbV9ibG9iTGlzdC5hdChpKS0+c2l6ZSgpOworICAgICAgICBp
ZiAodG90YWxTaXplICsgc2l6ZSA+IG1heExlbmd0aCkKKyAgICAgICAgICAgIHNpemUgPSBtYXhM
ZW5ndGggLSB0b3RhbFNpemU7CisgICAgICAgIHRvdGFsU2l6ZSArPSBtX2Jsb2JMaXN0LmF0KGkp
LT5yZWFkKG91dCArIHRvdGFsU2l6ZSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSk7CisgICAg
fQorICAgIHJldHVybiB0b3RhbFNpemU7Cit9CisKK2ludDY0X3QgQ29tYmluZWRCbG9iOjpyZWFk
RGlyZWN0KEJsb2I6OlJlYWRlciogcmVhZGVyLCBpbnQ2NF90IG1heExlbmd0aCkgY29uc3QKK3sK
KyAgICBpZiAobWF4TGVuZ3RoID4gbV90b3RhbFNpemUpCisgICAgICAgIG1heExlbmd0aCA9IG1f
dG90YWxTaXplOworICAgIGludDY0X3QgdG90YWxTaXplID0gMDsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fYmxvYkxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaW50NjRfdCBzaXpl
ID0gbV9ibG9iTGlzdC5hdChpKS0+c2l6ZSgpOworICAgICAgICBpZiAodG90YWxTaXplICsgc2l6
ZSA+IG1heExlbmd0aCkKKyAgICAgICAgICAgIHNpemUgPSBtYXhMZW5ndGggLSB0b3RhbFNpemU7
CisgICAgICAgIHRvdGFsU2l6ZSArPSBtX2Jsb2JMaXN0LmF0KGkpLT5yZWFkRGlyZWN0KHJlYWRl
ciwgc2l6ZSk7CisgICAgfQorICAgIHJldHVybiB0b3RhbFNpemU7CiB9Ci0jZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Jsb2IuaCBiL1dl
YkNvcmUvaHRtbC9CbG9iLmgKaW5kZXggNjEwODQyZS4uM2RhZDBjNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0Jsb2IuaAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYi5oCkBAIC0zMSw2NyArMzEs
MTkwIEBACiAjaWZuZGVmIEJsb2JfaAogI2RlZmluZSBCbG9iX2gKIAotI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJCeXRlU3RvcmUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBC
bG9iIDogcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4geworY2xhc3MgRmlsZUJsb2I7CitjbGFzcyBE
YXRhQmxvYjsKK2NsYXNzIENvbWJpbmVkQmxvYjsKKworY2xhc3MgQmxvYiA6IHB1YmxpYyBUaHJl
YWRTYWZlU2hhcmVkPEJsb2I+IHsKIHB1YmxpYzoKICNpZiBFTkFCTEUoQkxPQl9TTElDRSkKICAg
ICBzdGF0aWMgY29uc3QgaW50IHRvRW5kT2ZGaWxlOwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
ZG9Ob3RDaGVja0ZpbGVDaGFuZ2U7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJs
b2I+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEJsb2IocGF0aCkpOwotICAgIH0KKyAgICB0eXBlZGVmIEJ5dGVTdG9yZTo6UmVh
ZGVyIFJlYWRlcjsKIAogICAgIHZpcnR1YWwgfkJsb2IoKSB7IH0KKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCByZWFk
KGNoYXIqIG91dCwgc2l6ZV90IG1heExlbmd0aCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
NjRfdCByZWFkRGlyZWN0KFJlYWRlciogcmVhZGVyLCBpbnQ2NF90IG1heExlbmd0aCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBib29sIGlzVXNpbmdGaWxlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNVc2luZ0RhdGEoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NvbWJpbmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKworICAgIHZpcnR1YWwgRmlsZUJsb2IqIHRvRmlsZUJsb2IoKSB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBEYXRhQmxvYiogdG9EYXRhQmxvYigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIENvbWJpbmVkQmxvYiogdG9Db21iaW5lZEJsb2IoKSB7IHJldHVybiAwOyB9CiAKICNpZiBF
TkFCTEUoQkxPQl9TTElDRSkKICAgICBQYXNzUmVmUHRyPEJsb2I+IHNsaWNlKGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGxlbmd0aCkgY29uc3Q7CisgICAgdmlydHVhbCBsb25nIGxvbmcgc3Rh
cnQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBsb25nIGxvbmcgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gc2l6ZSgpOyB9CisgICAgdmlydHVhbCBsb25nIGxvbmcgc25hcHNob3RF
bmRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkgKyBsZW5ndGgoKTsgfQorICAgIHZp
cnR1YWwgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBkb05vdENoZWNr
RmlsZUNoYW5nZTsgfQogI2VuZGlmCiAKLSAgICBjb25zdCBTdHJpbmcmIHBhdGgoKSBjb25zdCB7
IHJldHVybiBtX3BhdGg7IH0KLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKICNp
ZiBFTkFCTEUoQkxPQl9TTElDRSkKLSAgICBsb25nIGxvbmcgc3RhcnQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0OyB9Ci0gICAgbG9uZyBsb25nIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVu
Z3RoOyB9Ci0gICAgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX3Nu
YXBzaG90TW9kaWZpY2F0aW9uVGltZTsgfQorICAgIHZpcnR1YWwgQmxvYiogc2xpY2VJbnRlcm5h
bChsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgpIGNvbnN0ID0gMDsKICNlbmRpZgor
fTsKIAotcHJvdGVjdGVkOgotICAgIEJsb2IoY29uc3QgU3RyaW5nJiBwYXRoKTsKKy8vIEZpbGVC
bG9iIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIEZpbGVCbG9iIDogcHVibGljIEJsb2IgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2I+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8QmxvYio+KG5ldyBG
aWxlQmxvYihwYXRoKSkpOworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgcGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0aDsgfQorCisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50NjRfdCByZWFkKGNoYXIqIG91dCwgc2l6ZV90IG1h
eExlbmd0aCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQ2NF90IHJlYWREaXJlY3QoUmVhZGVyKiBy
ZWFkZXIsIGludDY0X3QgbWF4TGVuZ3RoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc1Vz
aW5nRmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIEZpbGVCbG9iKiB0
b0ZpbGVCbG9iKCkgeyByZXR1cm4gdGhpczsgfQogCi1wcml2YXRlOgogI2lmIEVOQUJMRShCTE9C
X1NMSUNFKQotICAgIEJsb2IoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBsZW5ndGgsIGxvbmcgbG9uZyBzbmFwc2hvdFNpemUsIGRvdWJsZSBzbmFwc2hvdE1v
ZGlmaWNhdGlvblRpbWUpOworICAgIHZpcnR1YWwgbG9uZyBsb25nIHN0YXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydDsgfQorICAgIHZpcnR1YWwgbG9uZyBsb25nIGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgdmlydHVhbCBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc25hcHNob3RNb2RpZmljYXRpb25UaW1lOyB9CiAjZW5kaWYKIAot
ICAgIC8vIFRoZSB1bmRlcmx5aW5nIHBhdGggb2YgdGhlIGZpbGUtYmFzZWQgYmxvYi4gCitwcm90
ZWN0ZWQ6CisgICAgRmlsZUJsb2IoY29uc3QgU3RyaW5nJiBwYXRoKTsKKworcHJpdmF0ZToKKyAg
ICAvLyBUaGUgdW5kZXJseWluZyBwYXRoIG9mIHRoZSBmaWxlLWJhc2VkIGJsb2IuCiAgICAgU3Ry
aW5nIG1fcGF0aDsKIAogI2lmIEVOQUJMRShCTE9CX1NMSUNFKQotICAgIC8vIFRoZSBzdGFydGlu
ZyBwb3NpdGlvbiBvZiB0aGUgZmlsZS1iYXNlZCBibG9iLgotICAgIGxvbmcgbG9uZyBtX3N0YXJ0
OworICAgIEZpbGVCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIHN0YXJ0LCBsb25n
IGxvbmcgbGVuZ3RoLCBsb25nIGxvbmcgc25hcHNob3RTaXplLCBkb3VibGUgc25hcHNob3RNb2Rp
ZmljYXRpb25UaW1lKTsKKyAgICB2aXJ0dWFsIEJsb2IqIHNsaWNlSW50ZXJuYWwobG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGxvbmcgbG9uZyBz
bmFwc2hvdEVuZFBvc2l0aW9uKCkgY29uc3Q7CiAKLSAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBm
aWxlLWJhc2VkIGJsb2IuIFRoZSB2YWx1ZSBvZiAtMSBtZWFucyB0byB0aGUgZW5kIG9mIHRoZSBm
aWxlLgotICAgIGxvbmcgbG9uZyBtX2xlbmd0aDsKKyAgICAvLyBUaGUgc3RhcnRpbmcgcG9zaXRp
b24gaW4gdGhlIGZpbGUgb3IgaW4gdGhlIGJ5dGUtc3RvcmUgZm9yIHRoaXMgYmxvYi4KKyAgICBj
b25zdCBsb25nIGxvbmcgbV9zdGFydDsKKworICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIHNuYXBz
aG90IGRhdGEuIFRoZSB2YWx1ZSBvZiAtMSBtZWFucyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGZv
ciBmaWxlLWJhc2VkIGJsb2JzLgorICAgIGNvbnN0IGxvbmcgbG9uZyBtX2xlbmd0aDsKIAogICAg
IC8vIEEgZmxhZyB0byB0ZWxsIGlmIGEgc25hcHNob3QgaGFzIGJlZW4gY2FwdHVyZWQuCi0gICAg
Ym9vbCBtX3NuYXBzaG90Q2FwdHVyZWQ7CisgICAgY29uc3QgYm9vbCBtX3NuYXBzaG90Q2FwdHVy
ZWQ7CiAKICAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgZmlsZSB3aGVuIGEgc25hcHNob3QgaXMgY2Fw
dHVyZWQuIEl0IGNhbiBiZSAwIGlmIHRoZSBmaWxlIGlzIGVtcHR5LgotICAgIGxvbmcgbG9uZyBt
X3NuYXBzaG90U2l6ZTsKKyAgICBjb25zdCBsb25nIGxvbmcgbV9zbmFwc2hvdFNpemU7CiAKICAg
ICAvLyBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSB3aGVuIGEgc25hcHNo
b3QgaXMgY2FwdHVyZWQuIFRoZSB2YWx1ZSBvZiAwIGFsc28gbWVhbnMgdGhhdCB0aGUgc25hcHNo
b3QgaXMgbm90IGNhcHR1cmVkLgotICAgIGRvdWJsZSBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGlt
ZTsKKyAgICBjb25zdCBkb3VibGUgbV9zbmFwc2hvdE1vZGlmaWNhdGlvblRpbWU7CisjZW5kaWYK
K307CisKKy8vIERhdGFCbG9iIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIERhdGFCbG9iIDogcHVibGlj
IEJsb2IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2I+IGNyZWF0ZShjb25z
dCBOb25OdWxsUGFzc1JlZlB0cjxCeXRlU3RvcmU+IGRhdGEpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8QmxvYio+KG5ldyBEYXRhQmxvYihkYXRhKSkpOworICAg
IH0KKworICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aDsgfQorCisgICAgdmlydHVhbCBpbnQ2NF90IHJlYWQoY2hhciogb3V0LCBzaXpl
X3QgbWF4TGVuZ3RoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS0+cmVhZChv
dXQsIG1fc3RhcnQsIG1heExlbmd0aCk7CisgICAgfQorICAgIHZpcnR1YWwgaW50NjRfdCByZWFk
RGlyZWN0KEJsb2I6OlJlYWRlciogcmVhZGVyLCBpbnQ2NF90IG1heExlbmd0aCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2RhdGEtPnJlYWREaXJlY3QocmVhZGVyLCBtX3N0YXJ0LCBt
YXhMZW5ndGgpOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBpc1VzaW5nRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIERhdGFCbG9iKiB0b0RhdGFCbG9iKCkgeyBy
ZXR1cm4gdGhpczsgfQorCisjaWYgRU5BQkxFKEJMT0JfU0xJQ0UpCisgICAgdmlydHVhbCBsb25n
IGxvbmcgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9CisgICAgdmlydHVhbCBsb25n
IGxvbmcgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyNlbmRpZgorCitwcml2
YXRlOgorICAgIERhdGFCbG9iKE5vbk51bGxQYXNzUmVmUHRyPEJ5dGVTdG9yZT4gZGF0YSk7Cisj
aWYgRU5BQkxFKEJMT0JfU0xJQ0UpCisgICAgRGF0YUJsb2IoTm9uTnVsbFBhc3NSZWZQdHI8Qnl0
ZVN0b3JlPiBkYXRhLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZp
cnR1YWwgQmxvYiogc2xpY2VJbnRlcm5hbChsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5n
dGgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QmxvYio+KG5ldyBE
YXRhQmxvYihtX2RhdGEsIHN0YXJ0LCBsZW5ndGgpKTsKKyAgICB9CisjZW5kaWYKKworICAgIFJl
ZlB0cjxCeXRlU3RvcmU+IG1fZGF0YTsKKyAgICBjb25zdCBsb25nIGxvbmcgbV9zdGFydDsKKyAg
ICBjb25zdCBsb25nIGxvbmcgbV9sZW5ndGg7Cit9OworCisvLyBDb21iaW5lZEJsb2IgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitjbGFzcyBDb21iaW5lZEJsb2IgOiBwdWJsaWMgQmxvYiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QmxvYj4gY3JlYXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8QmxvYj4gPiYg
YmxvYkxpc3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8Qmxv
Yio+KG5ldyBDb21iaW5lZEJsb2IoYmxvYkxpc3QpKSk7CisgICAgfQorCisgICAgdmlydHVhbCB1
bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9Cisg
ICAgdmlydHVhbCBpbnQ2NF90IHJlYWQoY2hhciogb3V0LCBzaXplX3QgbWF4TGVuZ3RoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGludDY0X3QgcmVhZERpcmVjdChCbG9iOjpSZWFkZXIqIHJlYWRlciwg
aW50NjRfdCBtYXhMZW5ndGgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzQ29tYmluZWQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBDb21iaW5lZEJsb2IqIHRvQ29t
YmluZWRCbG9iKCkgeyByZXR1cm4gdGhpczsgfQorCisgICAgdm9pZCBhcHBlbmRCbG9iKE5vbk51
bGxQYXNzUmVmUHRyPEJsb2I+IGJsb2IpOworCisjaWYgRU5BQkxFKEJMT0JfU0xJQ0UpCisgICAg
bG9uZyBsb25nIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9CiAjZW5kaWYK
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQmxvYjsKKyAgICBDb21iaW5lZEJsb2IoY29u
c3QgVmVjdG9yPFJlZlB0cjxCbG9iPiA+JiBibG9iTGlzdCk7CisgICAgdm9pZCBhcHBlbmRCbG9i
TGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPEJsb2I+ID4mIGJsb2JMaXN0KTsKKworI2lmIEVOQUJM
RShCTE9CX1NMSUNFKQorICAgIENvbWJpbmVkQmxvYihjb25zdCBWZWN0b3I8UmVmUHRyPEJsb2I+
ID4mIGJsb2JMaXN0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZp
cnR1YWwgQmxvYiogc2xpY2VJbnRlcm5hbChsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5n
dGgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QmxvYio+KG5ldyBD
b21iaW5lZEJsb2IobV9ibG9iTGlzdCwgc3RhcnQsIGxlbmd0aCkpOworICAgIH0KKyNlbmRpZgor
CisgICAgVmVjdG9yPFJlZlB0cjxCbG9iPiA+IG1fYmxvYkxpc3Q7CisgICAgbG9uZyBsb25nIG1f
dG90YWxTaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0Jsb2IuaWRsIGIvV2ViQ29yZS9odG1sL0Jsb2IuaWRsCmluZGV4IDhkYjYwNjQu
LmI3NTVjYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9CbG9iLmlkbAorKysgYi9XZWJDb3Jl
L2h0bWwvQmxvYi5pZGwKQEAgLTMyLDEwICszMiw5IEBAIG1vZHVsZSBodG1sIHsKIAogICAgIGlu
dGVyZmFjZSBCbG9iIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
bG9uZyBzaXplOwotICAgICAgICAKKwogI2lmIGRlZmluZWQoRU5BQkxFX0JMT0JfU0xJQ0UpICYm
IEVOQUJMRV9CTE9CX1NMSUNFCiAgICAgICAgIEJsb2Igc2xpY2UoaW4gbG9uZyBsb25nIHN0YXJ0
LCBpbiBsb25nIGxvbmcgbGVuZ3RoKTsKICNlbmRpZgogICAgIH07Ci0KIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9CbG9iQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwvQmxvYkJ1aWxkZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiYzQwNDEKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYkJ1aWxkZXIuY3BwCkBAIC0wLDAgKzEsMjEzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJsb2JCdWlsZGVyLmgiCisKKyNpbmNsdWRl
ICJCbG9iLmgiCisjaW5jbHVkZSAiQnl0ZVN0b3JlLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgor
I2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyNpZiBPUyhXSU5ET1dTKQorc3RhdGljIGNvbnN0IEJsb2JCdWls
ZGVyOjpFbmRpbmdzVHlwZSBuYXRpdmVFbmRpbmcgPSBCbG9iQnVpbGRlcjo6RU5ESU5HX0NSTEY7
CisjZWxzZQorc3RhdGljIGNvbnN0IEJsb2JCdWlsZGVyOjpFbmRpbmdzVHlwZSBuYXRpdmVFbmRp
bmcgPSBCbG9iQnVpbGRlcjo6RU5ESU5HX0xGOworI2VuZGlmCisKK0Jsb2JCdWlsZGVyOjpCbG9i
QnVpbGRlcigpCisgICAgOiBtX2J5dGVTdG9yZShCeXRlU3RvcmU6OmNyZWF0ZSgpKQorICAgICwg
bV9lbmRpbmdzKEVORElOR19UUkFOU1BBUkVOVCkKK3sKK30KKworQmxvYkJ1aWxkZXI6On5CbG9i
QnVpbGRlcigpCit7Cit9CisKK2NsYXNzIFN0cmluZ1dyaXRlcldpdGhGaXhMaW5lQnJlYWtzIDog
cHVibGljIEJ5dGVTdG9yZTo6V3JpdGVyIHsKK3B1YmxpYzoKKyAgICBTdHJpbmdXcml0ZXJXaXRo
Rml4TGluZUJyZWFrcyhjb25zdCBDU3RyaW5nJiBmcm9tLCBCbG9iQnVpbGRlcjo6RW5kaW5nc1R5
cGUgZGVzaXJlZCk7CisgICAgaW50NjRfdCBmaW5hbFN0cmluZ0xlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FsY3VsYXRlZEZpbmFsU3RyaW5nTGVuZ3RoOyB9CisgICAgdmlydHVhbCBpbnQ2NF90
IHdyaXRlVG9CdWZmZXIoY2hhciogb3V0LCBpbnQ2NF90IGxlbmd0aCk7Citwcml2YXRlOgorICAg
IENTdHJpbmcgbV9mcm9tOworICAgIEJsb2JCdWlsZGVyOjpFbmRpbmdzVHlwZSBtX2VuZGluZ3M7
CisgICAgY29uc3QgY2hhciogbV9lbmRpbmdDaGFyczsKKyAgICB1bnNpZ25lZCBpbnQgbV9lbmRp
bmdMZW5ndGg7CisgICAgaW50IG1fbmVlZEZpeDsKKyAgICBpbnQ2NF90IG1fY2FsY3VsYXRlZEZp
bmFsU3RyaW5nTGVuZ3RoOworfTsKKworU3RyaW5nV3JpdGVyV2l0aEZpeExpbmVCcmVha3M6OlN0
cmluZ1dyaXRlcldpdGhGaXhMaW5lQnJlYWtzKGNvbnN0IENTdHJpbmcmIGZyb20sIEJsb2JCdWls
ZGVyOjpFbmRpbmdzVHlwZSBlbmRpbmdzKQorICAgIDogbV9mcm9tKGZyb20pCisgICAgLCBtX2Vu
ZGluZ3MoZW5kaW5ncyA9PSBCbG9iQnVpbGRlcjo6RU5ESU5HX05BVElWRSA/IG5hdGl2ZUVuZGlu
ZyA6IGVuZGluZ3MpCisgICAgLCBtX2VuZGluZ0NoYXJzKEJsb2JCdWlsZGVyOjpnZXRFbmRpbmdD
aGFycyhtX2VuZGluZ3MpKQorICAgICwgbV9lbmRpbmdMZW5ndGgoc3RybGVuKG1fZW5kaW5nQ2hh
cnMpKQorICAgICwgbV9uZWVkRml4KDApCit7CisgICAgbV9jYWxjdWxhdGVkRmluYWxTdHJpbmdM
ZW5ndGggPSBtX2Zyb20ubGVuZ3RoKCk7CisgICAgaWYgKG1fZW5kaW5ncyA9PSBCbG9iQnVpbGRl
cjo6RU5ESU5HX1RSQU5TUEFSRU5UKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBjaGFy
KiBwID0gbV9mcm9tLmRhdGEoKTsKKyAgICB3aGlsZSAoY2hhciBjID0gKnArKykgeworICAgICAg
ICBpZiAoYyA9PSAnXHInKSB7CisgICAgICAgICAgICAvLyBTYWZlIHRvIGxvb2sgYWhlYWQgYmVj
YXVzZSBvZiB0cmFpbGluZyAnXDAnLgorICAgICAgICAgICAgaWYgKCpwID09ICdcbicgJiYgbV9l
bmRpbmdzICE9IEJsb2JCdWlsZGVyOjpFTkRJTkdfQ1JMRikgeworICAgICAgICAgICAgICAgIG1f
Y2FsY3VsYXRlZEZpbmFsU3RyaW5nTGVuZ3RoICs9IChtX2VuZGluZ0xlbmd0aCAtIDIpOworICAg
ICAgICAgICAgICAgICsrbV9uZWVkRml4OworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2VuZGlu
Z3MgIT0gQmxvYkJ1aWxkZXI6OkVORElOR19DUikgeworICAgICAgICAgICAgICAgIG1fY2FsY3Vs
YXRlZEZpbmFsU3RyaW5nTGVuZ3RoICs9IChtX2VuZGluZ0xlbmd0aCAtIDEpOworICAgICAgICAg
ICAgICAgICsrbV9uZWVkRml4OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGMg
PT0gJ1xuJyAmJiBtX2VuZGluZ3MgIT0gQmxvYkJ1aWxkZXI6OkVORElOR19MRikgeworICAgICAg
ICAgICAgbV9jYWxjdWxhdGVkRmluYWxTdHJpbmdMZW5ndGggKz0gKG1fZW5kaW5nTGVuZ3RoIC0g
MSk7CisgICAgICAgICAgICArK21fbmVlZEZpeDsKKyAgICAgICAgfQorICAgIH0KK30KKworaW50
NjRfdCBTdHJpbmdXcml0ZXJXaXRoRml4TGluZUJyZWFrczo6d3JpdGVUb0J1ZmZlcihjaGFyKiBv
dXQsIGludDY0X3QgbGVuZ3RoKQoreworICAgIEFTU0VSVChtX2Zyb20uZGF0YSgpKTsKKyAgICBs
ZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIG1fY2FsY3VsYXRlZEZpbmFsU3RyaW5nTGVuZ3RoKTsK
KworICAgIGlmICghbV9uZWVkRml4KSB7CisgICAgICAgIEFTU0VSVChsZW5ndGggPD0gbV9mcm9t
Lmxlbmd0aCgpKTsKKyAgICAgICAgbWVtY3B5KG91dCwgbV9mcm9tLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICB9CisKKyAg
ICBjb25zdCBjaGFyKiBwID0gbV9mcm9tLmRhdGEoKTsKKyAgICBpbnQ2NF90IG53cml0dGVuID0g
MDsKKyAgICB3aGlsZSAoKnAgJiYgbndyaXR0ZW4rKyA8IGxlbmd0aCkgeworICAgICAgICBjaGFy
IGMgPSAqcCsrOworICAgICAgICBpZiAoYyA9PSAnXHInKSB7CisgICAgICAgICAgICBpZiAoKnAg
PT0gJ1xuJyAmJiBtX2VuZGluZ3MgIT0gQmxvYkJ1aWxkZXI6OkVORElOR19DUkxGKSB7CisgICAg
ICAgICAgICAgICAgLy8gVHVybiBDUkxGIGludG8gZGVzaXJlZEVuZGluZ3MuCisgICAgICAgICAg
ICAgICAgbWVtY3B5KG91dCwgbV9lbmRpbmdDaGFycywgbV9lbmRpbmdMZW5ndGgpOworICAgICAg
ICAgICAgICAgIG91dCArPSBtX2VuZGluZ0xlbmd0aDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
KnAgIT0gJ1xuJyAmJiBtX2VuZGluZ3MgIT0gQmxvYkJ1aWxkZXI6OkVORElOR19DUikgeworICAg
ICAgICAgICAgICAgIC8vIFR1cm4gQ1IgaW50byBkZXNpcmVkRW5kaW5ncy4KKyAgICAgICAgICAg
ICAgICBtZW1jcHkob3V0LCBtX2VuZGluZ0NoYXJzLCBtX2VuZGluZ0xlbmd0aCk7CisgICAgICAg
ICAgICAgICAgb3V0ICs9IG1fZW5kaW5nTGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgaWYgKGMgPT0gJ1xuJyAmJiBtX2VuZGluZ3MgIT0gQmxvYkJ1aWxkZXI6OkVORElOR19M
RikgeworICAgICAgICAgICAgLy8gVHVybiBMRiBpbnRvIGRlc2lyZWRFbmRpbmdzLgorICAgICAg
ICAgICAgbWVtY3B5KG91dCwgbV9lbmRpbmdDaGFycywgbV9lbmRpbmdMZW5ndGgpOworICAgICAg
ICAgICAgb3V0ICs9IG1fZW5kaW5nTGVuZ3RoOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVycyBhbG9uZS4KKyAgICAgICAgICAgICpvdXQrKyA9
IGM7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG53cml0dGVuOworfQorCitib29sIEJs
b2JCdWlsZGVyOjphcHBlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2Rl
JikKK3sKKyAgICBTdHJpbmdXcml0ZXJXaXRoRml4TGluZUJyZWFrcyB3cml0ZXIodGV4dC51dGY4
KCksIG1fZW5kaW5ncyk7CisgICAgcmV0dXJuIG1fYnl0ZVN0b3JlLT5hcHBlbmREaXJlY3QoJndy
aXRlciwgd3JpdGVyLmZpbmFsU3RyaW5nTGVuZ3RoKCkpOworfQorCitib29sIEJsb2JCdWlsZGVy
OjphcHBlbmRCbG9iKFBhc3NSZWZQdHI8QmxvYj4gYmxvYikKK3sKKyAgICBpZiAoIWJsb2ItPnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFtX2J5dGVTdG9yZS0+ZW1wdHko
KSkgeworICAgICAgICBtX2Jsb2JMaXN0LmFwcGVuZChEYXRhQmxvYjo6Y3JlYXRlKG1fYnl0ZVN0
b3JlLnJlbGVhc2UoKSkpOworICAgICAgICBtX2J5dGVTdG9yZSA9IEJ5dGVTdG9yZTo6Y3JlYXRl
KCk7CisgICAgfQorICAgIG1fYmxvYkxpc3QuYXBwZW5kKGJsb2IpOworICAgIHJldHVybiB0cnVl
OworfQorCitQYXNzUmVmUHRyPEJsb2I+IEJsb2JCdWlsZGVyOjpnZXRCbG9iKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fYmxvYkxpc3Quc2l6ZSgpKQorICAgICAgICByZXR1cm4gRGF0YUJsb2I6OmNy
ZWF0ZShtX2J5dGVTdG9yZSk7CisgICAgaWYgKG1fYmxvYkxpc3Quc2l6ZSgpID09IDEgJiYgbV9i
eXRlU3RvcmUtPmVtcHR5KCkpCisgICAgICAgIHJldHVybiBtX2Jsb2JMaXN0Lmxhc3QoKTsKKwor
ICAgIFJlZlB0cjxCbG9iPiBibG9iID0gQ29tYmluZWRCbG9iOjpjcmVhdGUobV9ibG9iTGlzdCk7
CisgICAgaWYgKCFtX2J5dGVTdG9yZS0+ZW1wdHkoKSkKKyAgICAgICAgYmxvYi0+dG9Db21iaW5l
ZEJsb2IoKS0+YXBwZW5kQmxvYihEYXRhQmxvYjo6Y3JlYXRlKG1fYnl0ZVN0b3JlKSk7CisKKyAg
ICByZXR1cm4gYmxvYi5yZWxlYXNlKCk7Cit9CisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEJs
b2JCdWlsZGVyOjpFbmRpbmdzVHlwZSwgQ2FzZUZvbGRpbmdIYXNoPiBFbmRpbmdzVHlwZU1hcDsK
K3N0YXRpYyBjb25zdCBFbmRpbmdzVHlwZU1hcCogY3JlYXRlRW5kaW5nc1R5cGVNYXAoKQorewor
ICAgIEVuZGluZ3NUeXBlTWFwKiBtYXAgPSBuZXcgRW5kaW5nc1R5cGVNYXA7CisgICAgbWFwLT5h
ZGQoInRyYW5zcGFyZW50IiwgQmxvYkJ1aWxkZXI6OkVORElOR19UUkFOU1BBUkVOVCk7CisgICAg
bWFwLT5hZGQoIm5hdGl2ZSIsIEJsb2JCdWlsZGVyOjpFTkRJTkdfTkFUSVZFKTsKKyAgICBtYXAt
PmFkZCgibGYiLCBCbG9iQnVpbGRlcjo6RU5ESU5HX0xGKTsKKyAgICBtYXAtPmFkZCgiY3IiLCBC
bG9iQnVpbGRlcjo6RU5ESU5HX0NSKTsKKyAgICBtYXAtPmFkZCgiY3JsZiIsIEJsb2JCdWlsZGVy
OjpFTkRJTkdfQ1JMRik7CisgICAgcmV0dXJuIG1hcDsKK30KKwordm9pZCBCbG9iQnVpbGRlcjo6
c2V0RW5kaW5ncyhjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgc3RhdGljIGNvbnN0IEVuZGlu
Z3NUeXBlTWFwKiB0eXBlTWFwID0gY3JlYXRlRW5kaW5nc1R5cGVNYXAoKTsKKyAgICBtX2VuZGlu
Z3MgPSB0eXBlLmlzTnVsbCgpID8gRU5ESU5HX1RSQU5TUEFSRU5UIDogdHlwZU1hcC0+Z2V0KHR5
cGUpOworfQorCitTdHJpbmcgQmxvYkJ1aWxkZXI6OmVuZGluZ3MoKSBjb25zdAoreworICAgIHN3
aXRjaCAobV9lbmRpbmdzKSB7CisgICAgY2FzZSBFTkRJTkdfVFJBTlNQQVJFTlQ6IHJldHVybiAi
dHJhbnNwYXJlbnQiOworICAgIGNhc2UgRU5ESU5HX05BVElWRTogcmV0dXJuICJuYXRpdmUiOwor
ICAgIGNhc2UgRU5ESU5HX0xGOiByZXR1cm4gImxmIjsKKyAgICBjYXNlIEVORElOR19DUjogcmV0
dXJuICJjciI7CisgICAgY2FzZSBFTkRJTkdfQ1JMRjogcmV0dXJuICJjcmxmIjsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICJ0cmFuc3BhcmVudCI7Cit9CisK
K2NvbnN0IGNoYXIqIEJsb2JCdWlsZGVyOjpnZXRFbmRpbmdDaGFycyhFbmRpbmdzVHlwZSBlbmRp
bmdzKQoreworICAgIHN3aXRjaCAoZW5kaW5ncykgeworICAgIGNhc2UgRU5ESU5HX0NSTEY6IHJl
dHVybiAiXHJcbiI7CisgICAgY2FzZSBFTkRJTkdfQ1I6IHJldHVybiAiXHIiOworICAgIGNhc2Ug
RU5ESU5HX05BVElWRTogZ2V0RW5kaW5nQ2hhcnMobmF0aXZlRW5kaW5nKTsKKyAgICBkZWZhdWx0
OiByZXR1cm4gIlxuIjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuICJcbiI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9CbG9iQnVpbGRlci5oIGIvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRjOWI5YwotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvaHRtbC9CbG9iQnVpbGRlci5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJsb2JC
dWlsZGVyX2gKKyNkZWZpbmUgQmxvYkJ1aWxkZXJfaAorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgQnl0ZVN0b3Jl
OworY2xhc3MgQmxvYkJ1aWxkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iQnVpbGRlcj4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2JCdWlsZGVyPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgQmxvYkJ1aWxkZXIoKSk7IH0KKyAgICB2aXJ0dWFsIH5CbG9iQnVp
bGRlcigpOworCisgICAgLy8gQXBwZW5kcyBzdHJpbmcuICBSZXR1cm5zIGZhbHNlIGlmIHRoZSBk
YXRhIGNvdWxkIG5vdCBiZSBhZGRlZC4KKyAgICBib29sIGFwcGVuZFN0cmluZyhjb25zdCBTdHJp
bmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIC8vIEFwcGVuZHMgYmxvYi4gIFJldHVy
bnMgZmFsc2UgaWYgdGhlIGRhdGEgY291bGQgbm90IGJlIGFkZGVkLgorICAgIGJvb2wgYXBwZW5k
QmxvYihQYXNzUmVmUHRyPEJsb2I+IGJsb2IpOworCisgICAgUGFzc1JlZlB0cjxCbG9iPiBnZXRC
bG9iKCkgY29uc3Q7CisKKyAgICBlbnVtIEVuZGluZ3NUeXBlIHsKKyAgICAgICAgRU5ESU5HX1RS
QU5TUEFSRU5UID0gMCwKKyAgICAgICAgRU5ESU5HX05BVElWRSwKKyAgICAgICAgRU5ESU5HX0xG
LAorICAgICAgICBFTkRJTkdfQ1IsCisgICAgICAgIEVORElOR19DUkxGLAorICAgIH07CisgICAg
dm9pZCBzZXRFbmRpbmdzKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBlbmRpbmdzKCkgY29u
c3Q7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGdldEVuZGluZ0NoYXJzKEVuZGluZ3NUeXBlKTsK
KworcHJpdmF0ZToKKyAgICBCbG9iQnVpbGRlcigpOworCisgICAgVmVjdG9yPFJlZlB0cjxCbG9i
PiA+IG1fYmxvYkxpc3Q7CisgICAgUmVmUHRyPEJ5dGVTdG9yZT4gbV9ieXRlU3RvcmU7CisKKyAg
ICBFbmRpbmdzVHlwZSBtX2VuZGluZ3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBCbG9iQnVpbGRlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQmxvYkJ1
aWxkZXIuaWRsIGIvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zMTkzNDBkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9o
dG1sL0Jsb2JCdWlsZGVyLmlkbApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwgeworCisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3IKKyAgICBdIEJsb2JCdWlsZGVy
IHsKKyAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
IGVuZGluZ3M7CisKKyAgICAgICAgQmxvYiBnZXRCbG9iKCk7CisgICAgICAgIFtDdXN0b21dIHZv
aWQgYXBwZW5kKC8qIG92ZXJsb2FkZWQgKi8pOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9CeXRlU3RvcmUuY3BwIGIvV2ViQ29yZS9odG1sL0J5dGVTdG9yZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNlMjgxMgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvaHRtbC9CeXRlU3RvcmUuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQnl0ZVN0b3JlLmgiCisKKyNpbmNsdWRlIDxsaW1pdHM+
CisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0J5dGVTdG9yZTo6Qnl0ZVN0b3JlKCkKKyAgICA6IG1fYnVmZmVyKDApCisgICAgLCBtX2J1ZmZl
clNpemUoMCkKK3sKK30KKworQnl0ZVN0b3JlOjp+Qnl0ZVN0b3JlKCkKK3sKKyAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7Cit9CisKK2Jvb2wgQnl0ZVN0b3JlOjphcHBlbmREaXJlY3QoV3JpdGVyKiB3
cml0ZXIsIGludDY0X3QgbGVuZ3RoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9sb2NrKTsK
KyAgICBjaGFyKiBuZXdCdWZmZXIgPSAwOworICAgIC8vIEZJWE1FOiBoYW5kbGUgc2l6ZW9mKHNp
emVfdCkgPCBsZW5ndGggY2FzZXMKKyAgICBpZiAobV9idWZmZXJTaXplICsgbGVuZ3RoID4gc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHNpemVfdCBuZXdTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlclNpemUgKyBs
ZW5ndGgpOworICAgIGlmICh0cnlGYXN0TWFsbG9jKG5ld1NpemUpLmdldFZhbHVlKG5ld0J1ZmZl
cikpIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICAgICAgbWVtY3B5KG5ld0J1ZmZl
ciwgbV9idWZmZXIsIG1fYnVmZmVyU2l6ZSk7CisgICAgICAgIGludDY0X3QgbndyaXR0ZW4gPSB3
cml0ZXItPndyaXRlVG9CdWZmZXIobmV3QnVmZmVyICsgbV9idWZmZXJTaXplLCBsZW5ndGgpOwor
ICAgICAgICBmYXN0RnJlZShtX2J1ZmZlcik7CisgICAgICAgIG1fYnVmZmVyID0gbmV3QnVmZmVy
OworICAgICAgICBpZiAobndyaXR0ZW4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBtX2J1ZmZlclNpemUgKz0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihud3JpdHRlbik7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2ludDY0
X3QgQnl0ZVN0b3JlOjpyZWFkRGlyZWN0KFJlYWRlciogcmVhZGVyLCBpbnQ2NF90IG9mZnNldCwg
aW50NjRfdCBtYXhMZW5ndGgpIGNvbnN0Cit7CisgICAgaWYgKG9mZnNldCA8IDAgfHwgbWF4TGVu
Z3RoIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICghbWF4TGVuZ3RoKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBNdXRleExvY2tlciBsb2NrKG1fbG9jayk7CisgICAgaWYgKG9mZnNl
dCA+PSBtX2J1ZmZlclNpemUpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChvZmZzZXQgKyBt
YXhMZW5ndGggPiBtX2J1ZmZlclNpemUpCisgICAgICAgIG1heExlbmd0aCA9IG1fYnVmZmVyU2l6
ZSAtIG9mZnNldDsKKyAgICByZXR1cm4gcmVhZGVyLT5yZWFkRnJvbUJ1ZmZlcigmbV9idWZmZXJb
b2Zmc2V0XSwgbWF4TGVuZ3RoKTsKK30KKworc3RydWN0IE1lbWNweVdyaXRlciA6IHB1YmxpYyBC
eXRlU3RvcmU6OldyaXRlciB7CisgICAgTWVtY3B5V3JpdGVyKGNvbnN0IGNoYXIqIGluKSA6IG1f
aW4oaW4pIHsgfQorICAgIHZpcnR1YWwgaW50NjRfdCB3cml0ZVRvQnVmZmVyKGNoYXIqIG91dCwg
aW50NjRfdCBsZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgICAgICBtZW1jcHkob3V0LCBtX2luLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAg
IH0KKyAgICBjb25zdCBjaGFyKiBtX2luOworfTsKKworc3RydWN0IE1lbWNweVJlYWRlciA6IHB1
YmxpYyBCeXRlU3RvcmU6OlJlYWRlciB7CisgICAgTWVtY3B5UmVhZGVyKGNoYXIqIG91dCkgOiBt
X291dChvdXQpIHsgfQorICAgIHZpcnR1YWwgaW50NjRfdCByZWFkRnJvbUJ1ZmZlcihjb25zdCBj
aGFyKiBpbiwgaW50NjRfdCBsZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQobGVuZ3RoIDw9
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgICAgICBtZW1jcHkobV9v
dXQsIGluLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOworICAgICAgICByZXR1cm4gbGVu
Z3RoOworICAgIH0KKyAgICBjaGFyKiBtX291dDsKK307CisKK2Jvb2wgQnl0ZVN0b3JlOjphcHBl
bmQoY29uc3QgY2hhciogaW4sIHNpemVfdCBsZW5ndGgpCit7CisgICAgTWVtY3B5V3JpdGVyIHdy
aXRlcihpbik7CisgICAgcmV0dXJuIGFwcGVuZERpcmVjdCgmd3JpdGVyLCBsZW5ndGgpOworfQor
CitpbnQ2NF90IEJ5dGVTdG9yZTo6cmVhZChjaGFyKiBvdXQsIGludDY0X3Qgb2Zmc2V0LCBzaXpl
X3QgbWF4TGVuZ3RoKSBjb25zdAoreworICAgIE1lbWNweVJlYWRlciByZWFkZXIob3V0KTsKKyAg
ICByZXR1cm4gcmVhZERpcmVjdCgmcmVhZGVyLCBvZmZzZXQsIG1heExlbmd0aCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CeXRlU3RvcmUu
aCBiL1dlYkNvcmUvaHRtbC9CeXRlU3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5jMzRmZTk1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0J5dGVTdG9y
ZS5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJ5dGVTdG9yZV9oCisjZGVmaW5lIEJ5dGVTdG9y
ZV9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCeXRlU3RvcmUgOiBwdWJsaWMg
VGhyZWFkU2FmZVNoYXJlZDxCeXRlU3RvcmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxCeXRlU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCeXRlU3RvcmUo
KSk7IH0KKyAgICB2aXJ0dWFsIH5CeXRlU3RvcmUoKTsKKworICAgIGludDY0X3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyU2l6ZTsgfQorICAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhc2l6ZSgpOyB9CisKKyAgICAvLyBSZWFkcyB0aGUgZGF0YSBpbnRvIHxvdXR8IGF0IG1v
c3QgfG1heExlbmd0aHwgYnl0ZXMuCisgICAgaW50NjRfdCByZWFkKGNoYXIqIG91dCwgaW50NjRf
dCBvZmZzZXQsIHNpemVfdCBtYXhMZW5ndGgpIGNvbnN0OworCisgICAgLy8gQXBwZW5kcyByYXcg
ZGF0YSB8aW58LiAgUmV0dXJucyBmYWxzZSBpZiB0aGUgZGF0YSBjb3VsZCBub3QgYmUgYWRkZWQu
CisgICAgYm9vbCBhcHBlbmQoY29uc3QgY2hhciogaW4sIHNpemVfdCBsZW5ndGgpOworCisgICAg
Y2xhc3MgUmVhZGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgaW50NjRfdCByZWFk
RnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBpbiwgaW50NjRfdCBtYXhMZW5ndGgpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB+UmVhZGVyKCkgeyB9CisgICAgfTsKKworICAgIGNsYXNzIFdyaXRlciB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIGludDY0X3Qgd3JpdGVUb0J1ZmZlcihjaGFyKiBv
dXQsIGludDY0X3QgbWF4TGVuZ3RoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgfldyaXRlcigpIHsg
fQorICAgIH07CisKKyAgICBib29sIGFwcGVuZERpcmVjdChXcml0ZXIqIHdyaXRlciwgaW50NjRf
dCBtYXhMZW5ndGgpOworICAgIGludDY0X3QgcmVhZERpcmVjdChSZWFkZXIqIHJlYWRlciwgaW50
NjRfdCBvZmZzZXQsIGludDY0X3QgbWF4TGVuZ3RoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBC
eXRlU3RvcmUoKTsKKworICAgIGNoYXIqIG1fYnVmZmVyOworICAgIHNpemVfdCBtX2J1ZmZlclNp
emU7CisgICAgbXV0YWJsZSBNdXRleCBtX2xvY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBCeXRlU3RvcmVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0RP
TUZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKaW5kZXggMTQ0MWU4
Yi4uNjE1N2UxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCkBAIC01MSw4ICs1MSw4IEBAIHZvaWQgRE9N
Rm9ybURhdGE6OmFwcGVuZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB2b2lkIERPTUZvcm1EYXRhOjphcHBlbmQoY29uc3QgU3RyaW5nJiBuYW1lLCBCbG9iKiBibG9i
KQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN1cHBvcnQgc2xpY2VkIGZpbGUgd2hlbiBCbG9i
LnNsaWNlIHN1cHBvcnQgaXMgbGFuZGVkLgotICAgIGlmICghbmFtZS5pc0VtcHR5KCkgJiYgIWJs
b2ItPnBhdGgoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPEZpbGU+IGZpbGUgPSBzdGF0
aWNfY2FzdDxGaWxlKj4oYmxvYik7CisgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSAmJiBibG9iLT5p
c1VzaW5nRmlsZSgpICYmICFibG9iLT50b0ZpbGVCbG9iKCktPnBhdGgoKS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgUmVmUHRyPEZpbGU+IGZpbGUgPSBzdGF0aWNfY2FzdDxGaWxlKj4oYmxvYi0+dG9G
aWxlQmxvYigpKTsKICAgICAgICAgYXBwZW5kRmlsZShuYW1lLCBmaWxlLnJlbGVhc2UoKSk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGUuY3BwIGIvV2ViQ29yZS9odG1s
L0ZpbGUuY3BwCmluZGV4IDk3ZmRjNDUuLmVkZDMyNTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9GaWxlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi0g
ICAgOiBCbG9iKHBhdGgpCisgICAgOiBGaWxlQmxvYihwYXRoKQogICAgICwgbV9uYW1lKHBhdGhH
ZXRGaWxlTmFtZShwYXRoKSkKIHsKICAgICAvLyBXZSBkb24ndCB1c2UgTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0TUlNRVR5cGVGb3JQYXRoKCkgYmVjYXVzZSBpdCByZXR1cm5zICJhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0iIHVwb24gZmFpbHVyZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxl
LmggYi9XZWJDb3JlL2h0bWwvRmlsZS5oCmluZGV4IGRkYTQ4MmEuLjcxYTMxZDEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9GaWxlLmgKKysrIGIvV2ViQ29yZS9odG1sL0ZpbGUuaApAQCAtMzIs
NyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZpbGUgOiBwdWJsaWMg
QmxvYiB7CitjbGFzcyBGaWxlIDogcHVibGljIEZpbGVCbG9iIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwKaW5kZXggZDQ1N2JkYy4uNTJjZWJiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTQ4Niw2
ICs0ODYsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIEZpbGVDb25zdHJ1
Y3RvciBGaWxlOwogICAgICAgICBhdHRyaWJ1dGUgRmlsZUxpc3RDb25zdHJ1Y3RvciBGaWxlTGlz
dDsKICAgICAgICAgYXR0cmlidXRlIEJsb2JDb25zdHJ1Y3RvciBCbG9iOworICAgICAgICBhdHRy
aWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gQmxvYkJ1aWxkZXJDb25zdHJ1Y3RvciBCbG9iQnVpbGRl
cjsgLy8gVXNhYmxlIHdpdGggbmV3IG9wZXJhdG9yCiAKICAgICAgICAgYXR0cmlidXRlIE5vZGVG
aWx0ZXJDb25zdHJ1Y3RvciBOb2RlRmlsdGVyOwogICAgICAgICBhdHRyaWJ1dGUgUmFuZ2VDb25z
dHJ1Y3RvciBSYW5nZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDU5
N2Y4NTkuLjkyZjcwODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAt
MTg4LDcgKzE4OCw5IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZERPTUZvcm1EYXRhKGNvbnN0IERP
TUZvcm1EYXRhJiBkb21Gb3JtRGF0YSwgYm9vbCBpc011bHRpUGFyCiAgICAgICAgICAgICBib29s
IHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlOwogICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnJl
bnQgdHlwZSBpcyBGSUxFLCB0aGVuIHdlIGFsc28gbmVlZCB0byBpbmNsdWRlIHRoZSBmaWxlbmFt
ZQogICAgICAgICAgICAgaWYgKHZhbHVlLmZpbGUoKSkgewotICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgcGF0aCA9IHZhbHVlLmZpbGUoKS0+cGF0aCgpOworICAgICAgICAgICAgICAgIC8v
IEZJWE1FIG5lZWQgdG8gc3luYyB3aXRoIGh0dHA6Ly93ZWJraXQub3JnL2IvMzY2NzgKKyAgICAg
ICAgICAgICAgICBBU1NFUlQodmFsdWUuZmlsZSgpLT5pc1VzaW5nRmlsZSgpKTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSB2YWx1ZS5maWxlKCktPnRvRmlsZUJsb2IoKS0+
cGF0aCgpOwogICAgICAgICAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9IHZhbHVlLmZpbGUoKS0+
ZmlsZU5hbWUoKTsKIAogICAgICAgICAgICAgICAgIC8vIExldCB0aGUgYXBwbGljYXRpb24gc3Bl
Y2lmeSBhIGZpbGVuYW1lIGlmIGl0J3MgZ29pbmcgdG8gZ2VuZXJhdGUgYSByZXBsYWNlbWVudCBm
aWxlIGZvciB0aGUgdXBsb2FkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA3
NmI2YmU2Li41MDNhMjhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMjYs
NiArMjYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEJsb2I7CiBjbGFzcyBD
aHJvbWVDbGllbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIERvY3VtZW50OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IGYxMGI1ODkuLjM5YmQ3ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTQ0NywxNCArNDQ3LDIwIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoQmxvYiog
Ym9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKCFpbml0U2VuZChlYykpCiAgICAgICAg
IHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBub24tZmlsZSBiYXNlZCBibG9iIG1heSBuZWVkIHRv
IGJlIHNlbnQgd2l0aCBhIHByb3BlciBjb250ZW50LXR5cGUKKyAgICBpZiAoIWJvZHktPmlzVXNp
bmdGaWxlKCkpIHsKKyAgICAgICAgc2VuZChib2R5LT5zdHJpbmdWYWx1ZSgpLCBlYyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobV9tZXRob2QgIT0gIkdFVCIgJiYgbV9tZXRo
b2QgIT0gIkhFQUQiICYmIG1fdXJsLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBzZXQgYSBDb250ZW50LVR5cGUgaWYgb25lIGlzIG5vdCBzZXQu
CiAgICAgICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgdXBsb2FkaW5nIGJ1bmRsZXMuCiAg
ICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAjaWYgRU5B
QkxFKEJMT0JfU0xJQ0UpCi0gICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHktPmFwcGVuZEZpbGVS
YW5nZShib2R5LT5wYXRoKCksIGJvZHktPnN0YXJ0KCksIGJvZHktPmxlbmd0aCgpLCBib2R5LT5t
b2RpZmljYXRpb25UaW1lKCkpOworICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5hcHBlbmRG
aWxlUmFuZ2UoYm9keS0+dG9GaWxlQmxvYigpLT5wYXRoKCksIGJvZHktPnN0YXJ0KCksIGJvZHkt
Pmxlbmd0aCgpLCBib2R5LT5tb2RpZmljYXRpb25UaW1lKCkpOwogI2Vsc2UKLSAgICAgICAgbV9y
ZXF1ZXN0RW50aXR5Qm9keS0+YXBwZW5kRmlsZShib2R5LT5wYXRoKCksIGZhbHNlKTsKKyAgICAg
ICAgbV9yZXF1ZXN0RW50aXR5Qm9keS0+YXBwZW5kRmlsZShib2R5LT50b0ZpbGVCbG9iKCktPnBh
dGgoKSwgZmFsc2UpOwogI2VuZGlmCiAgICAgfQogCg==
</data>
<flag name="review"
          id="35621"
          type_id="1"
          status="-"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>